LAPACK + GPU = MAGMA
使用gotoblas2+CUDA安装magma1.1.0(227)
准备阶段:
1 安装CUDA
2安装cpu BLAS
3安装LAPACK
安装过程:
1 按照README文档进行安装
2 在make.inc lib'中加入-lgfortran
3 出现error
gcc -O3 -DADD_ -DGPUSHMEM=130 -fPIC -Xlinker -zmuldefs -DGPUSHMEM=130 testing_zhetrd.o -o testing_zhetrd lin/liblapacktest.a -L../lib \
-lcuda -lmagma -lmagmablas -lmagma -L/opt/GotoBLAS2 -L/usr/local/cuda/lib64 -L/usr/lib64 /opt/GotoBLAS2/libgoto.a -lgoto -lpthread -lcublas -lcudart -llapack -lm -lgfortran
../lib/libmagma.a(zlatrd.o): In function `magma_zlatrd':
zlatrd.cpp:(.text+0x3be): undefined reference to `zdotc'
collect2: ld returned 1 exit status
make: *** [testing_zhetrd] 错误 1
解决方案:参考http://icl.cs.utk.edu/magma/forum/viewtopic.php?f=2&t=278和http://www.pavanky.com/installing-magma-with-gotoblas2/
The forum post linked above talks about how to fix the issue in zlatrd.cpp and clatrd.cpp by replacingblasf77_*dotc withcblas_*dotc_sub.
Be aware that the function is used twice. The first around line 256, and the second around line 325. Here are the changes to be made inzlatrd.cpp(在src目录下)
cblas_zdotc_sub(i, W(0