1. ホーム
  2. gcc

[解決済み] CUDAは私のgccのバージョンと互換性がありません。

2022-07-30 02:30:02

質問

CUDA SDK に同梱されている例のいくつかをコンパイルするのに問題があります。 私は開発者用ドライバー (バージョン 270.41.19) と CUDA ツールキットをインストールしました。 そして最後に SDK (両方とも 4.0.17 バージョン) をインストールしました。

当初は、全く与えてもコンパイルされませんでした。

error -- unsupported GNU version! gcc 4.5 and up are not supported!

81:/usr/local/cuda/include/host_config.hで責任行を見つけ、それを変更しました。

//#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 6)

で止まってしまい、それ以降はいくつかのサンプルしかコンパイルできませんでした。

In file included from /usr/include/c++/4.6/x86_64-linux-gnu/bits/gthr.h:162:0,
             from /usr/include/c++/4.6/ext/atomicity.h:34,
             from /usr/include/c++/4.6/bits/ios_base.h:41,
             from /usr/include/c++/4.6/ios:43,
             from /usr/include/c++/4.6/ostream:40,
             from /usr/include/c++/4.6/iterator:64,
             from /usr/local/cuda/include/thrust/iterator/iterator_categories.h:38,
             from /usr/local/cuda/include/thrust/device_ptr.h:26,
             from /usr/local/cuda/include/thrust/device_malloc_allocator.h:27,
             from /usr/local/cuda/include/thrust/device_vector.h:26,
             from lineOfSight.cu:37:
/usr/include/c++/4.6/x86_64-linux-gnu/bits/gthr-default.h:251:1: error: pasting         "__gthrw_" and "/* Android's C library does not provide pthread_cancel, check for
`pthread_create' instead.  */" does not give a valid preprocessing token
make[1]: *** [obj/x86_64/release/lineOfSight.cu.o] Error 1

いくつかのサンプルはコンパイルできるので、これはドライバの問題ではなく、サポートされていないgccのバージョンに関係するものだと思われます。gcc4.6 はこの時点でシステム全体を依存関係として持っているので、ダウングレードはオプションではありません...。

どのように解決するのですか?

すでに指摘されているように、nvcc は gcc 4.4 に依存しています。nvcc をインストールした際に作成される bin ディレクトリにソフトリンクを追加することにより、コンパイラー パラメーターを渡すことなく正しいバージョンの gcc を使用するように nvcc を構成することができます。

デフォルトの cuda バイナリ ディレクトリ (インストール時のデフォルト) は /usr/local/cuda/bin で、このディレクトリから gcc の正しいバージョンへのソフトリンクを追加すれば十分です。

sudo ln -s /usr/bin/gcc-4.4 /usr/local/cuda/bin/gcc