R中矩阵乘法的速度

时间:2013-09-19 05:03:56

标签: multithreading r performance fortran matrix-multiplication

直到今天,我确信对于大问题,需要求助于C ++,C或Fortran。但是,在最近的基准测试中,我得到了a %*% t(a)的结果,其中a是一个18000x18000类dgCMatrix的下三角矩阵,使用r-evolution软件包在5秒内完成-threading。

然而,即使使用英特尔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
    • 编译

0 个答案:

没有答案