Intel コンパイラ (ifort) を使用して、Fortran で書かれた大規模な HPC システムをコンパイルしています。約数百の個々のモジュールがあり、それらはすべて正常にコンパイルされますが、リンカーは次のエラーをスローします。
phys_grid.o(.text+0x91b2): In function `phys_grid_mp_assign_chunks_':
: undefined reference to `_mm_idivrem_epi32'
これ_mm_idivrem_epi32
はコンパイラーの自動ベクトル化の結果のようですが、コンパイラーが生成した場合、なぜこのエラーが発生するのでしょうか? 追加のライブラリにリンクする必要がありますか?
アップデート:
を使用しnm
て、関数をトレースできましたlibsvml
が、それとリンクしても役に立ちませんでした。ここに問題ia32intrin.h
があるようです: 次のように関数を宣言します:
__m128i __cdecl _mm_idivrem_epi32(__m128i * r, __m128i v1, __m128i v2); //__svml_idivrem4
しかし、nm
の出力から、ライブラリ内のシンボルは__svml_idivrem4
. ヘッダーファイルによると、これらは同じ機能ですが、これをリンカに伝えることはできますか?