2

我正在尝试使用版本 11.1 20090511 在具有 MPICC 的集群上编译 milcv7.7.8/ks_spectrum 的源代码,当通过“make ks_spectrum_hisq”命令在 milcv7.7.8/ks_spectrum 中创建源代码时,最后错误出现为

com_mpi.o: 在函数initialize_machine': ../generic/com_mpi.c:(.text+0xb447): undefined reference to_mm_idivrem_epi32 '

我现在知道这个函数 _mm_idivrem_epi32 是 intel 编译器中 ia32intrin.h 文件的一部分。

当我在具有 14.0.0 20130728 版本的英特尔编译器的新集群上使用最新的英特尔 mpiicc 时,代码编译成功。那么有什么方法可以告诉链接器包含函数 _mm_idivrem_epi32 位置...

4

1 回答 1

0

_mm_idivrem_epi32()不是函数,而是编译器内在函数。如果处理得当,它会替换为__svml_idivrem4()来自 Intel 的 Short Vector Math Library的调用libsvml

您很可能被 ICC 的自动矢量化器中的错误击中。尝试编译相同的源文件-no-vec并查看它是否有任何效果。或者更好地使用您可以使用的最新 ICC 版本。

于 2014-01-20T10:12:35.233 回答