How to link MKL with MPI?

别来无恙 提交于 2019-12-12 03:46:51

问题


I want to compile this C code with MKL, but when I run it using the command mpicc -mkl mkl_thread.c, it gives me an error about an unrecognized command line option -mkl. When I run it as mpicc mkl_thread.c -o mkl_thread, it gives a different error, saying "undefined reference to `MKL_Set_Num_Threads'". I don't know how I can run it with or link with MKL.

My code is:

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:


-mkl is an Intel specific option which can not be recognized by mpicc.

For non-Intel compiler, you could specify the link options explicitly.

$ 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

Please refer to Intel® Math Kernel Library Link Line Advisor for other link options.



来源:https://stackoverflow.com/questions/14562506/how-to-link-mkl-with-mpi

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!