首页 文章

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

提问于
浏览
0

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

  • 操作系统是6.3

  • gcc的版本是4.1.2

  • mkl是mkl_10.3.12.361

  • 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 回答

  • 3

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

    这些设置给了我:

    linker options:

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

    compile options:

    -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库与为不同接口层编译的对象相关联 .

相关问题