0

この C コードを MKL でコンパイルしたいのですが、コマンドを使用して実行すると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();
}
4

1 に答える 1

1

-mklでは認識できない Intel 固有のオプションmpiccです。

Intel 以外のコンパイラでは、リンク オプションを明示的に指定できます。

$ 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を参照してください。

于 2013-01-28T14:01:20.743 に答える