パフォーマンスクリティカルなセクションでasm言語を使用するプログラムをgccで作成していますが、実行時に正しいアーキテクチャでプログラムが実行されていることを確認します。特に、私はLinux上でia64(Itanium)とx86_64を区別する必要があります。プログラムでプロセッサタイプを検出する(Linux)
私は/ proc/cpuinfoを読んでいますか? clunkyと思われますが、私は適切なカーネル呼び出しを見つけることができません。
パフォーマンスクリティカルなセクションでasm言語を使用するプログラムをgccで作成していますが、実行時に正しいアーキテクチャでプログラムが実行されていることを確認します。特に、私はLinux上でia64(Itanium)とx86_64を区別する必要があります。プログラムでプロセッサタイプを検出する(Linux)
私は/ proc/cpuinfoを読んでいますか? clunkyと思われますが、私は適切なカーネル呼び出しを見つけることができません。
IA64とx86_64は全く異なるアーキテクチャです。 x86ベースのシステムでは、IA64ベースのシステムでは市場浸透率が低い理由の1つがx86命令セットとの非互換性の原因の1つになります。既存の従来の32ビットx86ベースのアプリケーションの幅広い配列を実行します)。
ベストは、プログラムの2つの異なるバージョンをコンパイルし、ユーザーがプログラムを呼び出すときにラッパースクリプトを使用して適切なバイナリを選択することです。
/proc/cpuinfo
は、LinuxのCPU情報の標準インタフェースです。
これはアーキテクチャに依存しないための最適なオプションです。
答えはすでに掲載されていますが、私はこれを追加します:
マシンはx86またはx64の場合は、cpuid
命令を通じて、より詳細な情報を得ることができます。
はサンプルのためhttp://stackoverflow.com/questions/9629850/how-to-get-cpu-info-in-c-on-linux-such-as-number-of-coresを参照してください。コード。 – bleater