診断と修正が簡単なはずの問題のように思われることに困惑しています。CUDAドライバーAPIを利用するC++ソースファイルがあります。を使用してコンパイルするとnvcc
、実行可能ファイルが生成され、問題なく動作します。ただし、を使用してコンパイルしようとするとg++
、リンカは次のシンボルへの未定義の参照について文句を言います/usr/lib/libcuda.so
。
undefined reference to cuDeviceGet'
... undefined reference to
cuDeviceComputeCapability'
... undefined reference to cuDeviceGetName'
... undefined reference to
cuDeviceTotalMem_v2'
... undefined reference to cuDeviceGetAttribute'
... undefined reference to
cuDeviceGetAttribute'
... undefined reference to cuDeviceGetAttribute'
... undefined reference to
cuDeviceGetAttribute'
それがライブラリパスに含まれていることを確認しようとし/usr/lib
ました(フラグ、、-L/usr/lib
を指定し-lcuda
、に追加/usr/lib
することにより$LIBRARY_PATH
)。ただし、問題は解決しません。/usr/lib/libcuda.so
リンカが不平を言っている記号が含まれていると確信しています。
$ nm -D /usr/lib/libcuda.so | grep cuDeviceGet
00000000000be410 T cuDeviceGet
00000000000bf120 T cuDeviceGetAttribute
00000000000d2e10 T cuDeviceGetByPCIBusId
00000000000be200 T cuDeviceGetCount
00000000000bdfa0 T cuDeviceGetName
00000000000d2bb0 T cuDeviceGetPCIBusId
00000000000bf380 T cuDeviceGetProperties
nvcc
ファイルを正常にコンパイルするのは
奇妙だと思いますが、そうでg++
はありません。この問題をどのように修正できるかについて何か考えがありますか?
ご助力ありがとうございます!