1

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. ヘッダーファイルによると、これらは同じ機能ですが、これをリンカに伝えることはできますか?

4

2 に答える 2

1

Google に頼ると、Mac で次のファイルが表示されます。

/Developer/opt/intel/Compiler/11.1/080/include/ia32intrin.h

シンボルの宣言を含む

_mm_idivrem_epi32

そのため、リンケージまたはインクルードが欠落しているように見えます。

于 2010-07-01T18:24:13.750 に答える
0

implicit none私の推測では、問題のソース ファイル (phys_grid.f90?) にはステートメントがありません。それがなければ、ifort は、そのプロファイルに一致するルーチンがどこかにあるに違いないと仮定し、それを陽気にコンパイルして、解決のためにリンカーに渡します。

もちろん、あなたの次の仕事は、欠落しているルーチンのコードを見つけに行くか、それを書き直すことができるようにすることです。

于 2010-07-01T18:10:07.647 に答える