2012-04-25 193 views
1

我正在嘗試使用MAGMA(http://icl.cs.utk.edu/magma/)在GPU上執行一些矩陣操作。我能夠成功調用CUDA內核,並且沒有問題。但是當我嘗試使用magmablas_sgemm函數時,出現錯誤。包含GPU庫的路徑問題

這是我使用的編譯命令:

 
nvcc -o msd msd.cu -I../../include -I/util/magma/1.1 -lmagma -lmagmablas -Xcompiler -I../../include -I/util/magma/1.1 "-O3" 

這是一個局部printenv輸出:

 
LD_LIBRARY_PATH=/util/magma/1.1/lib:/util/cuda/4.1.28/cuda/lib64:/util/cuda/4.1.28/cuda/lib 
MAGMA=/util/magma/1.1 
PATH=/util/magma/1.1:/util/cuda/4.1.28/cuda/bin:/usr/lib64/qt-3.3/bin:/util/Modules/3.2.8/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/kerberos/bin 
_LMFILES_=/util/Modules/modulefiles/null:/util/Modules/modulefiles/modules:/util/Modules/modulefiles/cuda/4.1.28:/util/Modules/modulefiles/magma/1.1 
MODULEPATH=/util/Modules/versions:/util/Modules/modulefiles 
LOADEDMODULES=null:modules:cuda/4.1.28:magma/1.1 

可以清楚地看出,岩漿庫包括在LD_LIBRARY_PATH,然而,我得到這個錯誤:

 
/usr/bin/ld: cannot find -lmagma 
collect2: ld returned 1 exit status 
make: *** [msd] Error 1 

任何幫助/指針將不勝感激!謝謝!

P.S:如果相關,nvcc用於主機代碼的底層C編譯器是gcc。
PPS:我查了一下道「/util/magma/1.1/lib」,它確實包含libmagma.a和libmagmablas.a

UPDATE:哇..我恨這個..但得到它的工作

nvcc -o msd msd.cu -I ../../ include -I/util/magma/1.1 -L/util/cuda/4.0.17/cuda/lib64 -L/util/magma/1.1/lib -lcublas -lm -lmagma -lmagmablas -Xcompiler -I ../../ include -I/util/magma/1.1「-O3」

所以我所做的只是明確包含庫路徑。但我認爲LD_LIBRARY_PATH會照顧那樣的東西。任何想法爲什麼這不起作用?

+2

LD_LIBRARY_PATH僅影響運行時共享庫​​加載。它與編譯無關。 – talonmies 2012-04-25 05:19:05

+0

啊!謝謝你澄清這一點 – Neo 2012-04-25 17:25:14

回答

1

哇..我恨這個..但得到它的工作

NVCC -o MSD msd.cu -I ../../包括-I/UTIL /岩漿/ 1.1-L/UTIL/cuda/4.0.17/cuda/lib64 -L/util/magma/1.1/lib -lcublas -lm -lmagma -lmagmablas -Xcompiler -I ../../ include -I/util/magma/1.1「-O3」

所以我所做的就是明確包含庫路徑。