运行mkl接口时出现分段错误

时间:2013-05-15 14:04:38

标签: c intel-mkl

我正在运行mkl_lab_solution.c这是使用MKL的一个例子,我可以正确编译它,当我运行它时,我得到了分段错误。我的运行时如下:

  1. OS是centos 6.3
  2. gcc的版本是4.1.2
  3. mkl是mkl_10.3.12.361
  4. makefile位于

    之下

    gcc -g -L / opt / intel / composer_xe_2011_sp1.12.361 / mkl / lib / intel64 -lmkl_intel_ilp64 -lmkl_intel_lp64 -lmkl_intel_sp2dp -lmkl_intel_thread -lmkl_core -lpthread -L / opt / intel / composer_xe_2011_sp1.12.361 / compiler / lib / intel64 -liomp5 -L / usr / lib64 -lstdc ++ -I / opt / intel / composer_xe_2011_sp1.12.361 / mkl / include -o test mkl-lab-solution.c

1 个答案:

答案 0 :(得分:3)

由于这在我的系统上工作正常,让我指出可能的错误。 首先,您需要运行. /path/to/intel/compilervars.sh intel64所有环境变量,例如MKLROOT。 其次,检查intel mkl link line advisor以查看系统上的选项。所以阅读你的编译命令我猜:linux,gnu编译器,动态链接,64位目标架构,64位长指针,多线程,intel omp库。

这些设置让我:

链接器选项:

-L$(MKLROOT)/lib/intel64 -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm

编译选项:

-DMKL_ILP64 -m64 -I$(MKLROOT)/include

无论出于何种原因,MKLROOT周围的括号不能用于bash,所以只需删除它们即可。 接下来请记住将所有编译选项放在链接器选项之前。最后的命令行应如下所示:

gcc mkl-lab-solution.c -DMKL_ILP64 -m64 -I$MKLROOT/include -L$MKLROOT/lib/intel64 -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm

由于您遇到运行时错误,我怀疑您将英特尔MKL库与为不同接口层编译的对象相关联。