ここで私の非常に単純な質問です。ICC では、#pragma SIMD を使用して、コンパイラーがベクトル化しないことを選択したループを強制的にベクトル化できることを知っています。GCCに類似したものはありますか? または、将来のリリースでこの機能を追加する予定はありますか?
かなり関連していますが、Graphite でベクトル化を強制するのはどうですか?
私のリクエストを検討してくれてありがとう ファビオ
ここで私の非常に単純な質問です。ICC では、#pragma SIMD を使用して、コンパイラーがベクトル化しないことを選択したループを強制的にベクトル化できることを知っています。GCCに類似したものはありますか? または、将来のリリースでこの機能を追加する予定はありますか?
かなり関連していますが、Graphite でベクトル化を強制するのはどうですか?
私のリクエストを検討してくれてありがとう ファビオ
gcc が SSE/SSE2/etc 命令の使用を許可されている限り、コンパイラは通常、「価値がある」と判断したときにベクトル命令を生成します。コンパイラーのほとんどのものと同様に、これには、コンパイラーが「おそらくこれは安全ではない」または「これは複雑すぎて、何が起こっているのか理解できない」と考えるのを避けるために、プログラマーの運/計画/注意が必要です。しかし、かなり新しいバージョンの gcc (4.x バージョンはすべてこれを行う必要があります) を使用している場合は、成功することがよくあります。
-msse
or -msse2
(以降の SSE 拡張の場合は etc.) を追加することで、コンパイラに SSE または SSE2 命令を使用させることができます。-msse2
x86-64 ではデフォルトです。
ただし、これを強制できる方法は知りません。コンパイラは、それが良い解決策であることに満足しているためにこれを行うか、そうでないかのいずれかです。
申し訳ありませんが、グラファイトについてはお答えできません。