21

GCCCFLAGSオプションの場合: -msse-msse2-mssse3-msse4、。それらは排他的な使用ですか、それとも一緒に使用できますか?-msse4.1-msse4.2

どちらを設定するかの選択は、プログラムが実行されるターゲット アーチがそれをサポートしているかどうかに依存するというのが私の理解ですが、これは正しいですか?

もしそうなら、ターゲット アーチがサポートする sse をどのように知ることができますか? Linux では /proc/cpuinfo を cat しますが、Mac や Windows の場合はどうでしょうか?

ありがとう!

4

1 に答える 1

36

スイッチは-m並行して使用でき、さらにそれらの一部はアーキテクチャまたは他のスイッチによって暗示されます。たとえば、x86_64 用のコードをビルドすると、-msse -msse2常に有効になります。

システムで実行することを意図したコードの場合は-march=native、プロセッサで利用できるものを選択する を選択する必要があります。たとえば、Sandy Bridge がある場合、これにより が有効になり-msse -msse2 -msse3 -mssse3 -msse4 -msse4.1 -msse4.2 -mavxます。

使用する命令セットを詳細に指定したい場合は、常に「最新」ではなく、利用可能なもののみを使用する必要があります。「最新」のものは現在-mavx2、お勧めしません。これをサポートする最初のプロセッサは 2013 年に利用可能になります。

于 2012-05-21T14:42:20.837 に答える