CUDA は私の gcc バージョンと互換性がありません 質問する

CUDA は私の gcc バージョンと互換性がありません 質問する

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 はシステム全体に依存しているため、ダウングレードは選択肢ではありません...

ベストアンサー1

  1. CUDA バージョンでサポートされている最大 GCC バージョンを確認します。

    CUDAバージョン サポートされている最大 GCC バージョン
    12.4、12.5 13.2
    12.1、12.2、12.3 12.2
    12 12.1
    11.4.1+、11.5、11.6、11.7、11.8 11
    11.1、11.2、11.3、11.4.0 10
    11 9
    10.1、10.2 8
    9.2、10.0 7
    9.0、9.1 6
    8 5.3
    7 4.9
    5.5、6 4.8
    4.2、5 4.6
    4.1 4.5
    4.0 4.4
  2. その GCC バージョンの環境変数を設定します。たとえば、CUDA 10.2 の場合:

    MAX_GCC_VERSION=8
    
  3. 次のバージョンがインストールされていることを確認してください:

    sudo apt install gcc-$MAX_GCC_VERSION g++-$MAX_GCC_VERSION
    
  4. CUDA フォルダー内にシンボリックリンクを追加します。

    sudo ln -s /usr/bin/gcc-$MAX_GCC_VERSION /usr/local/cuda/bin/gcc 
    sudo ln -s /usr/bin/g++-$MAX_GCC_VERSION /usr/local/cuda/bin/g++
    

    ( /usr/local/cudaCUDA インストール パスがない場合は、そのパスに置き換えてください)

CUDA-GCC 互換性テーブルの詳細については、この GitHub gist を参照してください。

おすすめ記事