1

直到今天,我都坚信对于大问题,需要求助于 C++、C 或 Fortran。然而,在最近的一次基准测试中,我使用 r-evolution 包和多线程在 5 秒内得到了 18000x18000 类的下三角矩阵的a %*% t(a)结果。adgCMatrix

然而,即使使用英特尔 ifort 编译器、并行计算和 MKL 库中内置的 BLAS 例程,Fortran 代码也总是需要大约一分钟的时间来解决相同的问题。有谁知道诀​​窍是什么,以及如何在 C 或 Fortran 等纯语言中使用它?

规格

  • 编译器:ifort 14.0
  • MKL:
    • 11.1版
    • 在fortran代码的模块头中:使用mkl95_blas,只有trmm
    • 编译器选项:-i8 -I$(MKLROOT)/include/intel64/ilp64 -I$(MKLROOT)/include
    • 链接器选项: $(MKLROOT)/lib/intel64/libmkl_blas95_ilp64.a \ -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_ilp64.a \ $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \ $(MKLROOT)/lib/intel64/libmkl_core.a \ -Wl,--end-group -liomp5 -lpthread -lm
    • 此外,编译和链接:-i-static -O3 -parallel
  • 本地 BLAS
    • f77 BLAS 库
    • 使用 -O3 -parallel 编译
4

0 回答 0