亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

CUDA與我的gcc版本不兼容

CUDA與我的gcc版本不兼容

慕哥6287543 2019-12-10 10:52:32
我在編譯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 tokenmake[1]: *** [obj/x86_64/release/lineOfSight.cu.o] Error 1作為一些示例編譯,我認為這不是驅動程序問題,而是與不支持的gcc版本有關。降級不是一種選擇,因為此時gcc4.6將整個系統作為依賴項...
查看完整描述

3 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

如前所述,nvcc取決于gcc 4.4。通過將軟鏈接添加到使用nvcc安裝創建的bin目錄中,可以將nvcc配置為使用正確版本的gcc,而不傳遞任何編譯器參數。


默認的cuda二進制目錄(安裝默認)是/ usr / local / cuda / bin,從該目錄向正確的gcc版本添加軟鏈接就足夠了:


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


查看完整回答
反對 回復 2019-12-10
?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

CUDA不支持gcc 4.5和4.6-無法編譯代碼,并且其他工具鏈(包括cuda-gdb)將無法正常工作。您不能使用它們,并且該限制是不可協商的。

您唯一的解決方案是安裝gcc 4.4版本作為第二個編譯器(大多數發行版都允許這樣做)。nvcc有一個選項--compiler-bindir,可用于指向備用編譯器。創建一個本地目錄,然后建立到支持的gcc版本可執行文件的符號鏈接。通過該--compiler-bindir選項將該本地目錄傳遞給nvcc ,您應該能夠編譯CUDA代碼而不會影響系統的其余部分。


編輯

請注意,此問題和答案與CUDA 4有關。

自編寫以來,NVIDIA在新的CUDA工具鏈版本中繼續擴展了對更高版本的gcc版本的支持。

  • 從CUDA 4.1版本開始,現在支持gcc 4.5。不支持gcc 4.6和4.7。

  • 從CUDA 5.0版本開始,現在支持gcc 4.6。不支持gcc 4.7。

  • 從CUDA 6.0版本開始,現在支持gcc 4.7。

  • 從CUDA 7.0版本開始,完全支持gcc 4.8,而在Ubuntu 14.04和Fedora 21上則有4.9支持。

  • 從CUDA 7.5版本開始,完全支持gcc 4.8,在Ubuntu 14.04和Fedora 21上有4.9支持。

  • 從CUDA 8版本開始,Ubuntu 16.06和Fedora 23完全支持gcc 5.3。

  • 從CUDA 9版本開始,在Ubuntu 16.04,Ubuntu 17.04和Fedora 25上完全支持gcc 6。

  • CUDA 9.2版本增加了對gcc 7的支持

  • CUDA 10.1版本增加了對gcc 8的支持

當前(從CUDA 10.1開始)在CUDA中不支持gcc 9。

請注意,NVIDIA最近在這里添加了一個非常有用的表,其中包含當前CUDA版本支持的編譯器和OS矩陣。


查看完整回答
反對 回復 2019-12-10
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

檢查您的CUDA版本支持的最大GCC版本。


對于CUDA 10.1,10.2:8


對于CUDA 9.2,10.0:7


對于CUDA 9.0,9.1:6


對于CUDA 8:5


為該GCC版本設置環境變量。例如,對于CUDA 10.2:


MAX_GCC_VERSION=8

確保已安裝該版本:


sudo apt install gcc-$MAX_GCC_VERSION g++-$MAX_GCC_VERSION

在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++


查看完整回答
反對 回復 2019-12-10
  • 3 回答
  • 0 關注
  • 3221 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號