我正在嘗試使用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會照顧那樣的東西。任何想法爲什麼這不起作用?
LD_LIBRARY_PATH僅影響運行時共享庫加載。它與編譯無關。 – talonmies 2012-04-25 05:19:05
啊!謝謝你澄清這一點 – Neo 2012-04-25 17:25:14