GPU で行列演算を実行するために MAGMA (http://icl.cs.utk.edu/magma/) を使用しようとしています。CUDA カーネルを正常に呼び出すことができ、問題はありません。しかし、magmablas_sgemm 関数を使用しようとすると、エラーが発生します。
これは私が使用しているコンパイルコマンドです:
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 マグマ=/util/マグマ/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: -lmagma が見つかりません collect2: ld が 1 つの終了ステータスを返しました make: *** [msd] エラー 1
どんなヘルプ/ポインタも大歓迎です! ありがとう!
PS: 関連する場合、nvcc がホスト コードに使用している基になる C コンパイラは gcc です。
PPS: パス「/util/magma/1.1/lib」を確認しましたが、libmagma.a と libmagmablas.a が含まれています。
更新:うわー..私はこれが嫌いです..しかし、これでうまくいきました
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 がそのようなことを処理すると思っていました。なぜそれがうまくいかなかったのですか?