私はnvidia-cuda-toolkit
パッケージ経由でインストールされたCUDA 7.5 SDKを使用してUbuntu 16.04を使用しています。 cuFFTのコールバック機能を使って簡単なテストプログラムをコンパイルしようとしています。この例のソースコードはavailable at GitHubです。このlibcufft_staticの例で、 `` __cudaRegisterLinkedBinary_60 _.... `"のエラーが未定義になっているのはなぜですか?
Following the instructions for compiling with the callback feature、Iは、再配置可能な装置コードなどのソースをコンパイルしlibcufft_static.a
に対するリンクている:上記の配列において
nvcc -ccbin g++ -dc -m64 -o cufft_callbacks.o -c cufft_callbacks.cu
nvcc -ccbin g++ -m64 -o cufft_callbacks cufft_callbacks.o -lcufft_static -lculibos
、最後のコマンドは、これと類似するすべて、エラーの一連の失敗:
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libcufft_static.a(set_callback.o): In function `__sti____cudaRegisterAll_47_tmpxft_00003a6a_00000000_7_set_callback_cpp1_ii_b7e0d86d()':
tmpxft_00003a6a_00000000-4_set_callback.cudafe1.cpp:(.text+0x6fd): undefined reference to `__cudaRegisterLinkedBinary_47_tmpxft_00003a6a_00000000_7_set_callback_cpp1_ii_b7e0d86d'
多くのシンボルが欠落していると文句を言いますが、すべてが__cudaRegisterLinkedBinary_
で始まります。私が手を携えているCentOS 7マシンでは、同じコマンドシーケンスが適切に機能するので、私は何か間違っているとは思わない。
私のSDKの構成が間違っていますか?私がSOなどで見た同様の問題のすべての言及は、上記の別々のコンパイルステップを実行することができなかった。私はそれがここの場合だとは思わない。
私はCUDA 8 RCとCentOS7でも問題はありませんでした。 Ubuntu 16.04は公式にサポートされているCUDA 7.5のディストリビューションではありませんので、あなたのCUDAのインストールは本当に壊れていると思われます。あなたのCUDAインストールは '/ usr/lib'のような普通でない場所に配布されているようです。 –
@RobertCrovella:情報をありがとう。私は、Ubuntu CUDAツールキットパッケージを削除し、NVidiaのバイナリインストーラからインストールして、それが役立つかどうかを確認します。 –
最も安全な方法は、サポートされている設定に切り替えることです。 Ubuntu 16.04のCUDA 8.0RCはサポートされている設定です。 CUDA 7.5(インストール方法にかかわらず)はありません。 –