web-dev-qa-db-ja.com

Visual C ++(x64)のSSE2オプション

64ビットバージョンのアプリをコンパイルするために、C++プロジェクトにx64構成を追加しました。すべて正常に見えますが、コンパイラーは次の警告を出します。

`cl : Command line warning D9002 : ignoring unknown option '/Arch:SSE2'`

64ビットプロジェクトで実際に利用できないSSE2最適化はありますか?

30

すべての64ビットプロセッサにSSE2があるようです。コンパイラオプションはデフォルトで常にオンになっているため、手動でオンにする必要はありません。

から ウィキペディア

SSE命令:元のAMD64アーキテクチャはIntelのSSEおよびSSE2をコア命令として採用しました。SSE3命令は2005年4月に追加されました.SSE2は、x87命令セットのIEEE 80ビット精度を、IEEE 32ビットまたは64ビット浮動小数点数学のいずれかの選択に置き換えます。これにより、他の多くの最新CPUと互換性のある浮動小数点演算が提供されます。SSEおよびSSE2命令も、8つの新しいXMMレジスタで動作するように拡張されました。SSEおよびSSE2は、最新のx86プロセッサでは32ビットモードで使用できますが、 32ビットプログラムで使用されるこれらのプログラムは、この機能を備えたプロセッサを搭載したシステムでのみ機能します。これは、64ビットプログラムでは問題になりません AMD64プロセッサにはSSEおよびSSE2があるため、x87命令の代わりにSSEおよびSSE2命令を使用しても、x64プログラムを実行できるマシンのセットは減りません。 SSEおよびSSE2は一般的にfです従来のx87命令、MMX、および3DNow!のほとんどの機能を複製します。

42

SSE2を選択すると警告が表示されることは理解していますが、それでもばかげています。ただし、/ Arch:AVXを選択すると、警告が表示されます。 SP1で修正されると確信しています。そのほんの少しスパムと迷惑。

3
Zeksie

コンパイラオプション/ Arch:AVXは古いCPUでは機能しないため、CPUがそれをサポートしていることを確認する必要があります。サポートされていない古いXeonCPU用に1.12tensorflowパッケージを再コンパイルする必要があるときに、この問題が発生しました。

上記の/ Arch:SSE2(Kirillとして)をオンにしましたが、まったく同じ問題が発生します。 Microsoftコンパイラは、このオプションが無視されるという警告(INFO)を発行します。

Command line warning D9002 : ignoring unknown option '/Arch:SSE2'

Microsoftのドキュメントから、このオプションはx86でのみ使用可能であり、私にも意味がないことが理解されています。

ただし、MSDNでは次のように述べています。

/Arch:SSE and /Arch:SSE2 are only available when you compile for the x86 platform.

そして、そのSSEはとにかくx64で使用されます。したがって、ここでオプションを削除しました。

0
Adam Spalek