直到今天,我确信对于大问题,需要求助于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
编译