質問: Xcode 4で_mm_shuffle_psを使用するとOpenMP + SSEのバグが発生する可能性があります(LLVM GCC) コンパイラをGCCからXCode 4.2のLLVM GCC 4.2に切り替えましたが、OpenMPの_mm_shuffle_ps組み込み関数で奇妙なリンカエラーが発生しました。この関数は動作しますが、一度ompブロック内に置くと、次のリンカーエラーが生成されます。 ``` "___builtin_ia32_shufps", referenced from: __ZN7Annulus12traceFactorsEP9PrimitiveP8VFMatrix.omp_fn.0 in Annulus.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status ``` 私のコードの基本的な構造は次のとおりです: ``` #pragma omp parallel { //Some stuff #pragma omp for { //Do more stuff including _mm_shuffle_ps } } ``` コードはGCC 4.2でうまくいきますので、これはOpenMPのLLVM GCC実装のバグですか、エキゾチックなコンパイラフラグが必要ですか?
回答: ちょうどFYI: 私はここでもshuf_pd命令で同じ問題があります。他の組み込み関数もうまく動作します。私はそのバグをAppleに提出しました。 私がまだ試みていない回避策があるかもしれません:すべてのSSEコードを別の関数に入れ、OpenMPループから呼び出します。