如何将MKL与MPI链接?

时间:2013-01-28 12:54:28

标签: mpi intel-mkl

我想用MKL编译这个C代码,但是当我使用命令mpicc -mkl mkl_thread.c运行它时,它给出了一个关于无法识别的命令行选项-mkl的错误。当我以mpicc mkl_thread.c -o mkl_thread运行它时,它会给出一个不同的错误,说“未定义引用`MKL_Set_Num_Threads'”。我不知道如何使用或链接MKL。

我的代码是:

define NUM_PROCS 5 

int main (int argc, char ** argv)

{

    int threads_per_proc[NUM_PROCS] = { 1,2 ,3, 4,5 };
    int rank;
    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    // ...
    // Signal an error if rank >= 5
    // ...
    mkl_set_num_threads(threads_per_proc[rank]);
    MPI_Finalize();
}

1 个答案:

答案 0 :(得分:1)

-mkl是英特尔特定选项,mpicc无法识别。

对于非英特尔编译器,您可以明确指定链接选项。

$ mpicc mkl_thread.c -o mkl_thread \
        -I$(MKLROOT)/include -L$(MKLROOT)/lib/intel64 \
        -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core \
        -liomp5 -lpthread -lm

有关其他链接选项,请参阅Intel® Math Kernel Library Link Line Advisor