我想用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();
}
答案 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。