2

おそらくばかげた質問ですが、私は次のような状況にあります。

現在、開発マシンはすべて64ビットのIntelベースのシステムであり、アプリケーションの32ビットバージョンと64ビットバージョンを作成しています。また、(AMDベースのシステムではなく)Intelベースのシステムを使用することをお客様に推奨します。

現在、ITマネージャーは、いくつかの新しい開発システムを購入し、(64ビット)AMDベースのシステムの購入を検討しているコストを削減したいと考えています。Visual Studio(2010)は、実行中のプロセッサをおそらく気にせず、生成されたコードはおそらく同じですが、念のために言っておきます。どのプロセッサで生成された実行可能ファイル(AMDとIntel)に違いはありますか?構築されていますか?

4

3 に答える 3

2

設定方法によって異なります。私はデフォルトで、それは問題ではないと思います。

/QxHostインテル®コンパイラーを使用していて、またはを使用してコンパイルする場合/fastは、システムを明確に調べてシステムの機能を確認するため、問題になります。

ただし、/arch:XXXオプションなどを指定すると、マシンから独立します。GCCの場合、デフォルトではホストマシンを参照しないと思います。

編集:

MKLのようなライブラリに関する限り、ホストマシンはMKLのどのバージョンがコンパイルされるかに影響を与えません。一般に、MKLの複数のコードパスは、関係なくバイナリに配置され、CPUディスパッチは実行時に実行されます。

于 2011-09-14T05:16:31.237 に答える
2

.NETコンパイラとVisualStudioコンパイラは、以前にこれを試したことがあり、それが吐き出すアセンブリは何があっても同じであるため、AFAIKを実際には気にしません。ICCとGCCの場合、AMDとIntel(非​​常に具体的なもの)で区別する必要のある特定のコールパスがありますが、最初から心配する必要はありません。GCCは、Intelで多くのSSEおよび分岐予測ヒントを使用して最適化を試みるICC(Intel Cコンパイラ)ほどではありませんが、特定の機能をサポートしない可能性のあるAMDでは一部を除外します。

IntelやAMDなどの特定のアーキテクチャタイプに依存するライブラリもありますが、非常に複雑な浮動小数点並列ライブラリや複雑なスレッドライブラリなど、非常に特殊化されています(研究目的でのみ使用されています)。

于 2011-09-14T05:18:32.280 に答える
1

それは問題ではありません。ソフトウェアの観点からは、AMDとIntelは同じチップです:x86ベースのCPU。はい、異なる拡張命令セットを持つことができます。しかし、異なる世代に属するIntelCPUについても同じことが言えます。Visual Studioコンパイラはそれらすべてで実行され、同じコードを生成します。

于 2011-09-14T05:23:07.803 に答える