特定のオプションが指定され、適切な条件が与えられた場合、GCC はループを自動的にベクトル化できます。同じことができる広く利用可能な他のコンパイラはありますか?
9 に答える
MicrosoftのSilverlight プロジェクトに代わるオープン ソースであるMonoプロジェクトは、SIMD 命令を使用するオブジェクトを追加しました。コンパイラではありませんが、Mono CLR は、ネイティブにベクトル操作を生成する最初のマネージ コード システムです。
IBM の xlc は、C および C++ をある程度自動ベクトル化することもできます。
これは古いスレッドですが、このリストに追加します。VisualStudio11にも自動ベクトル化があります。
VectorCもこれを行うことができます。すべてのターゲット CPU を指定して、さまざまな命令セット (MMX、SIMD、SIMD2 など) を利用することもできます。
Visual C++ (私は VS2005 を使用しています) は、SSE 命令の使用を強制できます。Intel のコンパイラほど良くないようですが、誰かが既に VC++ を使用している場合、このオプションをオンにしない理由はありません。
プロジェクトのプロパティ、構成プロパティ、C/C++、コード生成: 拡張命令セットを有効にするに移動します。「ストリーミング SIMD 命令」または「ストリーミング SIMD 命令 2」を設定します。浮動小数点モデルを高速に設定する必要があります。他のいくつかのオプションも変更する必要がありますが、コンパイラはそれについて教えてくれます。