2011-09-14 13 views
2

おそらく愚かな質問を作るために、私は次のような状況で午前:AMD Intelプロセッサ対実行ファイル

当社の開発マシン我々は、32ビットを生成し、現在はすべての64ビットIntelベースのシステムは、ある64私たちのアプリケーションのビット版です。また、AMDベースのシステムではなくIntelベースのシステムを使用することをお勧めします。

私たちのIT管理者は、新しい開発システムを購入し、購入(64ビット)AMDベースシステムのコストを削減したいと考えています。 Visual Studio(2010)はおそらく、どのプロセッサが実行されているかには関係なく、生成されたコードはおそらく同じですが、確かに確かめてください:プロセッサ(AMD対Intel)それは構築されていますか?

+0

システムがベンダーに最適化されたライブラリを使用している可能性があります。 MKLまたはACMLの数学ライブラリ。しかし、一般的には、違いはありません。 OTOH、[非倫理的または違法なコンパイラが存在する](http://www.agner.org/optimize/blog/read.php?i=49#49) – Iterator

+0

@Iterator:MKLなどのCPUディスパッチは実行時に行われるため、コンパイルされたバイナリには影響しません。 – Mysticial

+0

@Mystical:コンパイルに関する修正。私はOPが少し狭いので、バイトコードだけでなく、パフォーマンスを含む全体的な違いにOPが関心があると思っていました。 – Iterator

答えて

2

.NETとVisual Studioのコンパイラは、私がこれまでに実験していたAFAIKにはまったく気にしません。何があっても、吐き出すアセンブリは同じです。 ICCとGCCの場合、AMDとIntelのために区別されなければならない特定のコールパスがあります(非常に特定のもの)。 GCCはIntel上で多くのSSEと分岐予測のヒントを使って最適化しようとするICC(Intel C Compiler)ほどではありませんが、特定の機能をサポートしていない可能性のあるAMDには残しておきます。

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

2

どのように構成するかによって異なります。私はデフォルトでは、それは問題ではないと思う。

インテル®コンパイラーを使用していて、/QxHostまたは/fastでコンパイルする場合は、システムが明らかにしていることを確認する必要があります。

ただし、/arch:XXXまたは任意のオプションを指定すると、マシンとは独立しています。 GCCの場合、私はデフォルトではホストマシンを見ないと思う。

EDIT:

限りMKLのようなライブラリが行くように、ホストマシンはまだMKLのバージョンがコンパイルされている効果がありません。通常、MKLの複数のコードパスは、バイナリに関係なく、CPUディスパッチは実行時に行われます。

1

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

関連する問題