導航:首頁 > 源碼編譯 > nvcc如何編譯cu

nvcc如何編譯cu

發布時間:2023-05-14 21:25:51

A. [踩坑]編譯CUDA運算元時NVCC報錯的解決

在使用BasicSR時需要編譯CUDA運算元,然而出現報錯

查了很多資料,首先是團清basicsr的issue上面有人遇到 同樣的問題

他的問題首或簡是gcc版本跟torch版本不匹配,但是我看了一下我的gcc版本7.3.1應該是匹配的,試了一下安裝7.3.0同樣報錯。

然後尋找其他的issue,直到看到pytorch有一個issue也是 同樣的問題 ,樓里有個人說cuda10.1初始版本10.1.105有問題,需者褲要升級,所以升級了一下cuda版本到10.1.243,問題解決

B. 請教有沒有在linux使用cuda的朋友

在安裝cuda前,你必須檢測自己的顯卡是否支持cuda,如何檢查自己的顯卡型號:
lspci | grep "NVIDIA"查看是否英偉達顯卡,或者lspci | grep "VGA"直接查看顯卡信息;
在英偉達官方可以查看支持cuda顯卡的型號,順便記得在官方下載你所需的cuda版本。我選擇的是最新版的CUDA-7
我的系統版本centos6.5(finall),我下載的是.run文件。
文件下載成功,轉到下載目錄,首先需要修改.run文件的rwx許可權:
chmod 755 cuda_7.0.28_linux.run
還有一些前提工作需要完善
1:確保文本界面:vi /etc/inittab 把最下面一行的:5:改成:3: 然後用esc,:wq保存並且退出。(如果你沒有找到,可以INIT3直接進入文本界面)
(2.3.4這種操作是因為台式機雙顯卡的緣故貌似) 2:拉黑nouveau. 執行以下步驟:vi /etc/modprobe.d/blacklist.conf 在此文件後面添加:blacklist nouveau
3:使用 dracut重新建立 initramfs image file: mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname-r).img.bak
4:重新建立 the initramfs file: dracut -v /boot/initramfs-$(uname -r).img $(uname -r)
(如果不拉黑nouveau會出現兩種問題,我在筆記本上出現的問題是安裝完成後無法進入圖形界面,我在伺服器上出現的問題是無法安裝,當然,可能還有其他問題,但是我沒有遇到#24)

reboot重新啟動電腦,然後就可以執行之前的.run 文件了
安裝成功以後,你還需要配置nvcc:find -name "nvcc" (找到nvcc所在位置);vi /root/.bashrc(編輯.bashrc文件) ;加入alias nvcc="你查詢到的nvcc所在位置";export nvcc;
至此,你就可以使用nvcc編譯你的.cu文件了!::nvcc –cuda xxxxx.cu

C. linux中哪些工具可以測試cuda程序,監控gpu內存性能

nvcc 編譯代碼
nvcc -o squareSum squareSum.cu運行結果:
CUDA initialized.
(GPU) sum:29909398 time:787124792
(CPU) sum:29909398 time:10000
從執行的結胡襲磨果可以看出, GPU 中運行的程序居然要比 CPU 中的消耗的時鍾周期還要多得多。這是有原因的。
因為程序之中並沒有使用 CUDA 並行執行的優勢。
這里分析一下 GPU 運行的性能。
此 GPU 消耗的時鍾周期: 787124792 cycles
GeForce G 103M 的 clockRate: 1.6 GHz
所以可以計算出 GPU 上運行時間是: 時鍾周期 / clockRate = 0.49195 s
1 M 個 int 型數據有 4M Byte 的數據量,實際使用的 GPU 內存帶寬是:數據量 / 運行時間 = 8.13 MB/s
可見這個程序沒有很好的發揮 GPU 的性能,使用的內存帶寬很小。
沒有有效利用 GPU 性能的原因???
在 CUDA 中,一般的數據復制到的顯卡內存的部份,稱為 global memory。這些內存是沒有 cache 的,而且,存取 global memory 所需要的時間(即 latency)是非常長的,通常是數百個 cycles。
由於我們的程序只有一個 thread,所以每次它讀取 global memory 的內容,就要等到實際讀取到數據、累加到 sum 之後,才能進行下一步。這就是為什麼它的表現會這么的差。實際上 GPU 一直在等待上一個數據運行的結束,然後再拷貝一個內存數據,所以使用的時鍾周期自然就長了。
由於 global memory 沒有 cache,所以要避開巨大的 latency 的方法,就是要利用大量的 threads。假設現在有大量褲斗的 threads 在同時執行,那麼當一個 thread 讀取內存,開始等待結果的時候,GPU 就可以立刻切換到下一個 thread,並讀取下一個內禪擾存位置。因此,理想上當 thread 的數目夠多的時候,就可以完全把 global memory 的巨大 latency 隱藏起來了。

D. CUDA與OPENMP連用時,怎麼編譯

但是在CUDA模板中沒有開啟openmp支持選項,之前參考了「在 -Xcomplier 後面增加了 "/openmp"選項。」無嘩橡雀效果,我亂早的實際語句為(去掉路徑)nvcc.exe" -G -gencode=arch=compute_10,code=\"sm_10,compute_10\" -gencode=arch=compute_20,code=\"sm_20,compute_20\" --machine 32 -ccbin "D:\Program Files\如橋Microsoft Visual Studio 9.0\VC\bin" -D_NEXUS_DEBUG -g -Xcompiler "/EHsc /W3 /nologo /Od /Zi /MTd /openmp" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\\include" -maxrregcount=0 --compile -o "Debug/cudaOpenMP.cu.obj" cudaOpenMP.cu

E. cuda helloworld 沒有GPU顯示,問題出在哪裡哪位大神可以告訴我

如果你是第一次使用CUDA,在Linux下可以使用下面的命令來檢查CUDA編譯器是否安裝正確:

$ which nvcc

一般,該指令輸出為:

/usr/local/cuda/bin/nvcc

另外,你可能還需要檢查下你機器上的GPU型號,可以使用給下面的命令查詢:

$ ls -l /dev/nv*

可能的輸出為:

crw-rw-rw- 1 root root 195, 0 Jul 3 13:44 /dev/nvidia0

crw-rw-rw- 1 root root 195, 1 Jul 3 13:44 /dev/nvidia1

crw-rw-rw- 1 root root 195, 255 Jul 3 13:44 /dev/nvidiactl

crw-rw---- 1 root root 10, 144 Jul 3 13:39 /dev/nvram

以上輸出顯示這里有兩個GPU顯卡安裝在機器上。

寫一段CUDA程序的基本過程為:

F. 在linux下怎麼運行cuda的.cu文件

舉個例子:add.cu
編譯:nvcc -o add add.cu
運行:./add

G. 編譯cuda並運行cuda程序的命令是

在什麼操作系統下啊。。。你問的是不是編譯cu代碼啊,因為CUDA不是開源的。
如果編譯自己的代碼,是nvcc
運行和執行其它可執行程序一樣啊

閱讀全文

與nvcc如何編譯cu相關的資料

熱點內容
簡訊刪除助手文件夾 瀏覽:688
java辦公自動化 瀏覽:340
php中超鏈接 瀏覽:253
linux默認路由設置 瀏覽:36
linux如何掛載iso 瀏覽:432
vs程序換文件夾後不能編譯 瀏覽:557
安卓源碼編譯輸入腳本沒反應 瀏覽:47
phpmysql自增 瀏覽:167
把ppt保存為pdf 瀏覽:533
汽車密封件加密配件 瀏覽:887
黑馬程序員15天基礎班 瀏覽:560
java調整格式 瀏覽:521
香港雲伺服器租用價 瀏覽:78
linuxsublime3 瀏覽:560
imac混合硬碟命令 瀏覽:278
沈陽用什麼app租房車 瀏覽:857
00後高中生都用什麼app 瀏覽:239
戴爾塔式伺服器怎麼打開獨立顯卡 瀏覽:808
醫療程序員招聘 瀏覽:599
住宿app可砍價是什麼意思 瀏覽:133