新聞中心
在如今的計(jì)算機(jī)領(lǐng)域中,GPU已經(jīng)成為了處理高性能計(jì)算任務(wù)的主要工具之一。而在GPU中,NVIDIA的顯卡可以說(shuō)是市場(chǎng)中的一股絕對(duì)勢(shì)力,因?yàn)槠鋸?qiáng)大的性能和廣泛的應(yīng)用支持。為了讓開發(fā)者更好的利用NVIDIA顯卡的性能,NVIDIA公司開發(fā)了一款名為CUDA的開發(fā)平臺(tái),提供了一系列的開發(fā)工具和API。

安陽(yáng)縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
從CUDA6.5版本開始,NVIDIA公司針對(duì)Linux平臺(tái)提供了專門的編譯器,叫做NVCC編譯器,該編譯器專門用于將CUDA C/C++代碼編譯為可執(zhí)行的二進(jìn)制文件。本文將詳細(xì)介紹Linux中NVCC編譯器的使用和相關(guān)知識(shí)。
一、NVCC編譯器的安裝
NVCC編譯器需要與CUDA Toolkit配套使用,因此首先需要安裝CUDA Toolkit。CUDA Toolkit支持多個(gè)Linux平臺(tái),可以前往官網(wǎng)下載適合自己系統(tǒng)的版本。
安裝CUDA Toolkit比較簡(jiǎn)單,根據(jù)官方文檔進(jìn)行安裝即可。安裝完成后,默認(rèn)情況下NVCC編譯器已經(jīng)被安裝到了系統(tǒng)中,可以通過(guò)以下命令查看:
$ which nvcc
如果輸出/usr/local/cuda/bin/nvcc,說(shuō)明已經(jīng)安裝成功。
二、使用NVCC編譯器進(jìn)行編譯
NVCC編譯器可以將CUDA C/C++代碼編譯為可執(zhí)行文件,編譯命令的格式如下:
$ nvcc [options] -o output_file input_file
其中options表示編譯選項(xiàng),input_file表示源文件,output_file表示輸出文件。
下面給出一個(gè)簡(jiǎn)單的例子:
#include
__global__ void square(float *d_out, float *d_in) {
int idx = threadIdx.x;
float f = d_in[idx];
d_out[idx] = f * f;
}
int mn(int argc, char **argv) {
const int ARRAY_SIZE = 64;
const int ARRAY_BYTES = ARRAY_SIZE * sizeof(float);
// 輸入和輸出數(shù)組
float h_in[ARRAY_SIZE];
float h_out[ARRAY_SIZE];
// 輸入數(shù)組初始化
for (int i = 0; i
h_in[i] = float(i);
}
// 設(shè)備端輸入和輸出數(shù)組
float *d_in;
float *d_out;
cudaMalloc((void **)&d_in, ARRAY_BYTES);
cudaMalloc((void **)&d_out, ARRAY_BYTES);
// 將輸入數(shù)據(jù)從主機(jī)端復(fù)制到設(shè)備端
cudaMemcpy(d_in, h_in, ARRAY_BYTES, cudaMemcpyHostToDevice);
// 調(diào)用CUDA核函數(shù)進(jìn)行計(jì)算
square>>(d_out, d_in);
// 將計(jì)算結(jié)果從設(shè)備端復(fù)制到主機(jī)端
cudaMemcpy(h_out, d_out, ARRAY_BYTES, cudaMemcpyDeviceToHost);
// 打印輸出
for (int i = 0; i
printf(“%f”, h_out[i]);
printf(((i % 4) != 3) ? “\t” : “\n”);
}
// 釋放設(shè)備端內(nèi)存
cudaFree(d_in);
cudaFree(d_out);
return 0;
}
上述代碼定義了一個(gè)名為square的CUDA核函數(shù),該函數(shù)用于計(jì)算輸入數(shù)組每個(gè)元素的平方,并將結(jié)果保存到輸出數(shù)組中。該程序?qū)⑤斎霐?shù)組初始化為0到63的整數(shù),并調(diào)用square函數(shù)進(jìn)行計(jì)算,并將結(jié)果輸出到終端中。
接下來(lái)使用nvcc命令將該代碼編譯為可執(zhí)行文件:
$ nvcc -o square square.cu
完成后,運(yùn)行該程序:
$ ./square
可以在終端中看到輸出結(jié)果。
三、NVCC編譯器的高級(jí)用法
NVCC編譯器不僅可以編譯CUDA C/C++代碼,還支持一些高級(jí)用法,如代碼分析、優(yōu)化和分析工具等。
1. 代碼分析
NVCC編譯器提供了一些代碼分析工具,用于幫助開發(fā)者分析CUDA C/C++代碼的性能和行為。其中比較常用的工具是nvprof和nsight。
nvprof是一個(gè)基于命令行的性能分析工具,可以用于分析CUDA應(yīng)用程序的性能和行為。其使用方法如下:
$ nvprof ./your_program
nsight是一款基于GUI的性能分析工具,提供了比nvprof更詳細(xì)的性能分析信息。其界面友好,操作簡(jiǎn)便,但是需要安裝顯卡驅(qū)動(dòng)。安裝后可以在IDE中直接進(jìn)行性能分析。
2. 優(yōu)化
NVCC編譯器為開發(fā)者提供了一些優(yōu)化選項(xiàng),可以用于優(yōu)化CUDA C/C++代碼的性能。例如,可以使用-O選項(xiàng)啟用編譯器的更優(yōu)化功能,或者使用–arch選項(xiàng)指定要優(yōu)化的GPU架構(gòu)。
3. 分析工具
NVCC編譯器還提供了一些分析工具,幫助開發(fā)者分析CUDA應(yīng)用程序的行為和性能。其中比較常用的工具是cuda-memcheck和cuda-gdb。
cuda-memcheck是一個(gè)內(nèi)存檢測(cè)工具,可以幫助開發(fā)者檢測(cè)CUDA應(yīng)用程序中的內(nèi)存錯(cuò)誤和泄漏。其使用方法如下:
$ cuda-memcheck ./your_program
cuda-gdb是一個(gè)基于命令行的調(diào)試工具,可以用于調(diào)試CUDA應(yīng)用程序。其使用方法與行使用gdb調(diào)試C/C++程序類似。
四、
相關(guān)問(wèn)題拓展閱讀:
- cuda安裝完成后nvcc -V報(bào)錯(cuò)
cuda安裝完成后nvcc -V報(bào)錯(cuò)
背景
在Windows上使用GPU進(jìn)行深度學(xué)習(xí)一直都不是主流,我們一般都首選Linux作為深度學(xué)習(xí)操作系統(tǒng)。但很多朋友如果只是想要了解深度學(xué)習(xí),似乎沒(méi)有必要專門裝雙系統(tǒng)或者改用Linux?,F(xiàn)實(shí)生活中,很多使用學(xué)校或者公司電腦的朋友也沒(méi)有操作權(quán)限改換系統(tǒng)。那么到底是否可以在Windows系統(tǒng)上設(shè)置深度學(xué)習(xí)框架,開發(fā)深度學(xué)習(xí)模型呢?
好消息是越來(lái)越多的深度學(xué)習(xí)框架開始支持Windows,這使得在Windows上使用GPU加速學(xué)習(xí)過(guò)程也變成了可能。很多朋友雖然沒(méi)有一塊很強(qiáng)勁的顯卡,但也可以以較低的代價(jià)來(lái)了解在GPU上運(yùn)行深度學(xué)習(xí)模型的過(guò)程。值得欣喜的是,大部分Nvidia GeForce系列的顯卡都可以使用CUDA,大部分有獨(dú)顯的筆記本理論上都可以使用GPU來(lái)“深度學(xué)習(xí)”。即使加速效果不明顯,但很多入門級(jí)的顯卡依然可以用于TensorFlow,這至少可以幫助大家了解和熟悉這個(gè)框架。
請(qǐng)不要讓缺少預(yù)算或者系統(tǒng)不兼容成為探索路上的攔路虎和借口。
本著探索的精神,我試著在兩臺(tái)Windows電腦上安裝了CUDA(用于調(diào)用GPU)和TensorFlow(谷歌開發(fā)的深度學(xué)習(xí)工具庫(kù)),把這個(gè)過(guò)程記錄下來(lái)和大家分享。
在開始之前想再次提醒大家,在Windows上安裝CUDA和TensorFlow有很多坑,對(duì)于各種軟件版本以及系統(tǒng)設(shè)置的要求可謂非常刁鉆,很容易就“誤入陷阱”。請(qǐng)大家嚴(yán)格對(duì)照我的操作流程,以防出錯(cuò)。多圖長(zhǎng)文預(yù)警!?。∈褂媒坛虝r(shí)建議在電腦端閱讀,可以放大圖片。
準(zhǔn)備步驟
請(qǐng)按照介紹下載以下軟件備用,具體安裝流程在第二部分介紹。
簡(jiǎn)單的說(shuō),我們需要 Windows 7/8/10, Server 2023/2023 + Python 3.5 + Visual Studio 2023 + CUDA 8.0 + CuDnn 6.0。前宴
1.操作系統(tǒng)要求和硬件要求:
Windows版本:Windows 7,Windows 8,Windows 10,Windows Server 12/16
顯卡版本:請(qǐng)對(duì)照英偉達(dá)提供的支持CUDA的顯卡列表,建議查看英文版。不知道自己顯卡版本的可以通過(guò)“設(shè)備管理器”查看,或者使用第三方軟件GPU-Z查看。請(qǐng)注意,AMD的顯卡不可以使用英偉達(dá)開發(fā)的CUDA…
中文列表:CUDA – 支持CUDA的GPU – NVIDIA(英偉達(dá))
英文列表:CUDA GPUs
2.Python版本:64位版本的Python 3.5。注意Python3.6和2.7都不可以。地址和版本如下圖所示。如果使用錯(cuò)誤的Python版本,將無(wú)法安裝TensorFlow!
3.Visual Studio版本:
我們使用的CUDA8.0不支持Visual Studio 2023,使用VS2023會(huì)報(bào)錯(cuò)。
Visual Studio 2023的話現(xiàn)在最新的版本是Visual Studio 2023 with Update 3,網(wǎng)上有人說(shuō)不能用Update 3這個(gè)版本,但根據(jù)我的親測(cè)可以使用VS2023 with Update 3。下載免費(fèi)的Community版本即可:
。這個(gè)鏈接是ISO版本,大家也可選擇EXE版本安裝。其他VS2023的版本,如企業(yè)版(Enterprise)或者專業(yè)版(Professional)也可以,事實(shí)上我測(cè)試的時(shí)候安裝的是企業(yè)版。
Visual Studio 2023根據(jù)文檔介紹也可以,但我并沒(méi)有實(shí)際測(cè)試,不推薦使用。
如果你的電腦上已經(jīng)安裝了VS2023或者VS2023,可以同時(shí)下載安裝VS2023,并不存在沖突。
4.CUDA版本:TensorFlow的支持的CUDA版本截止到今天(2023年10月1日)還是 CUDA 8.0。千萬(wàn)要慧拿銀注意英偉達(dá)官網(wǎng)上的默認(rèn)版本是CUDA 9.0,請(qǐng)不要下載安裝這個(gè)版本。
正確的8.0版本下載地址: CUDA Toolkit 8.0 – Feb 2023。網(wǎng)絡(luò)比較好的朋友建議下載網(wǎng)絡(luò)安裝版本,不要下載本地版。
5.CuDnn版本:CuDnn 6.0for CUDA8.0。這是唯一可以敏缺使用的版本,下載時(shí)請(qǐng)對(duì)應(yīng)的你的操作系統(tǒng)選擇合適的版本。
請(qǐng)?zhí)貏e注意下載CuDnn前必須注冊(cè)英偉達(dá)社區(qū)的會(huì)員,雖然說(shuō)是英文的但非常簡(jiǎn)單。 正確的下載版本如下圖所示:
6.所有必備文件:
安裝步驟(建議使用管理員權(quán)限賬號(hào))
請(qǐng)盡量按照本文的安裝順序進(jìn)行安裝,否則有可能運(yùn)行失??!最重要的是,安裝CUDA必須在安裝Visual Studio之后,這兩個(gè)順序不可以調(diào)換。
1.安裝Python
建議直接用Python的原生安裝包,安裝時(shí)建議勾選把Python加到系統(tǒng)路徑當(dāng)中去。
安裝完成后檢查Python的版本和PiP3的版本,那就是系統(tǒng)路徑中的默認(rèn)Python是3.54,且Pip3的版本大于8.01。
檢測(cè)方法如上圖,打開命令行分別輸入 “python -V” 和 “pip3 -V”即可,正確的輸出如上圖。
2.安裝Visual Studio 2023
安裝VS2023沒(méi)什么難度,只有一個(gè)選項(xiàng)需要自定義,別的選項(xiàng)都可以使用默認(rèn)值。VS2023的默認(rèn)安裝不包括C++的編譯器,必須手動(dòng)勾選Visual C++,不然會(huì)面臨后續(xù)的CUDA編譯錯(cuò)誤。
主要原因是VS2023在安裝時(shí)并沒(méi)有默認(rèn)安裝C++的編譯器,也就是CL.exe。在后文中我會(huì)提到如果你沒(méi)裝Visual C++系統(tǒng)會(huì)如何報(bào)錯(cuò)。
3.安裝CUDA
安裝CUDA前請(qǐng)務(wù)必確認(rèn)VS2023安裝成功!這個(gè)時(shí)候你需要安裝CUDA,雙擊我們下載的安裝文件即可,一切都選擇默認(rèn)即可。
安裝成功后會(huì)看到如下圖:
4.驗(yàn)證CUDA安裝成功:
4.1. 打開命令行,也就是cmd然后輸入“nvcc -V”,如果安裝正確的話你應(yīng)該看到這樣的輸出:
輸出中顯示了CUDA的版本是release 8.0。
4.2. 使用VS和CUDA編譯測(cè)試文件
進(jìn)入“C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0”文件夾,雙擊打開 “Samples vs2023”這個(gè)文件。
選擇編譯生成1_Utilities中所有的文件。具體操作就是在1_Utilities上右鍵選擇Build,注意紅框部分的64位和Release:
這個(gè)時(shí)候,你可能遇到了編譯錯(cuò)誤,如果你發(fā)現(xiàn)錯(cuò)誤提示是無(wú)法找到 CUDA.prop那么就是CUDA安裝錯(cuò)誤,建議檢查CUDA版本重新安裝。
如果你看到這兩個(gè)錯(cuò)誤:
TRK0005:Failed to locate: “CL.exe”. The system cannot find the file specified.系統(tǒng)找不到CL.exe,無(wú)法編譯文件。面對(duì)這個(gè)錯(cuò)誤那就是你沒(méi)選Visual C++,需要重新安裝時(shí)選上這個(gè)組件。
MSB8036:Windows SDK 8.1 was not found.如果你同時(shí)看到了這個(gè)錯(cuò)誤說(shuō)你沒(méi)有安裝 Windows SDK 8.1,那也可以通過(guò)安裝C++ Redistribution這個(gè)來(lái)解決。
如果你沒(méi)有遇到編譯錯(cuò)誤,那么應(yīng)該看到下圖提示5個(gè)文件編譯成功:
在成功后,你會(huì)發(fā)現(xiàn)在“C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\bin\win64\Release”文件夾中出現(xiàn)了一堆文件,我們主要需要deviceQuery和bandwidthTest。
4.3. deviceQuery和bandwidthTest驗(yàn)證
運(yùn)行我們剛才編譯出來(lái)的deviceQuery.exe,也就是在cmd中運(yùn)行這個(gè)文件,下圖中左下的紅框顯示 result = pass代表安裝測(cè)試成功,右下的紅框是你的顯卡型號(hào)請(qǐng)確認(rèn)型號(hào)正確。Tesla K80只是我的這臺(tái)機(jī)器型號(hào),這個(gè)每個(gè)人可能都不一樣。
運(yùn)行我們剛才編譯出來(lái)的bandwidthTest.exe,方法一樣,也是關(guān)注是否result = PASS。
5.安裝CuDnn
解壓縮我們下載的CuDnn文件,得到3個(gè)文件夾:bin, include, lib。如下圖所示,將這個(gè)三個(gè)文件夾復(fù)制到“C:\ProgramData\NVIDIA GPU Computing Toolkit\v8.0”。
6.確認(rèn)系統(tǒng)環(huán)境變量(Environment Variables)
確認(rèn)Python3.5.4.和Pip3在系統(tǒng)環(huán)境變量中,檢查的方法上面已經(jīng)介紹了。
打開系統(tǒng)環(huán)境變量設(shè)置,以Win10為例,請(qǐng)參考百度經(jīng)驗(yàn)(
)介紹。
確認(rèn)CUDA_PATH和CUDA_PATH_V8.0已經(jīng)存在
手動(dòng)添加 “C:\ProgramData\NVIDIA GPU Computing Toolkit\v8.0\bin”到Path里面。
7.安裝TensorFlow的GPU版本
打開cmd,輸入“pip3 install tensorflow-gpu”
我因?yàn)橐呀?jīng)安裝過(guò)了,所以顯示已經(jīng)安裝。此處要注意三點(diǎn):
要用pip3而不是pip
要安裝tensorflow-gpu,而不是tensorflow
如果安裝失敗,很有可能你的Python版本不是3.5.,或者pip3版本太低,可以使用”pip3 install –upgrade pip3″來(lái)升級(jí)pip3
之一個(gè)TensorFlow程序!
恭喜你,我們離勝利已經(jīng)一步之遙了:) 讓我們來(lái)驗(yàn)證我們安裝的TensorFlow可以使用GPU!
打開cmd,輸入以下指令打開python的interactive shell。
首先導(dǎo)入tensorflow:
import tensorflow as tf
接著每次輸入一行代碼,并回車,你應(yīng)該可以看到下圖中表明你的GPU已經(jīng)開始工作啦~
a = tf.constant(, shape=, name=’a’)
b = tf.constant(, shape=, name=’b’)
c = tf.matmul(a, b)
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print sess.run(c)
你可能在import TensorFlow時(shí)遇到了錯(cuò)誤,如下圖。這是因?yàn)槟愕腃uDnn設(shè)置錯(cuò)誤,請(qǐng)參考本文確認(rèn)系統(tǒng)環(huán)境變量(Environment Variables)來(lái)修復(fù)。
寫在最后
實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),時(shí)間也是。在所有人都在大力鼓吹深度學(xué)習(xí)的今天,不管你喜歡還是反對(duì),我都希望你可以親自試試,感受一下:)
而現(xiàn)實(shí)生活中我們都有各種各樣的制約,比如系統(tǒng)版本限制、比如有限的顯卡預(yù)算。這也是我寫這篇教程的目的,我不希望這些原因成為阻礙你探索研究的障礙。希望我的這篇文章為你的深度學(xué)習(xí)之路做出了一點(diǎn)微小的貢獻(xiàn)。
應(yīng)該是你的CUDA 運(yùn)行庫(kù)的路徑不知尺讓對(duì),如果是Windows,請(qǐng)查看 系統(tǒng)困隱屬性/搭局高級(jí)/
環(huán)境變量
關(guān)于linux nvcc的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都網(wǎng)站營(yíng)銷推廣找創(chuàng)新互聯(lián),全國(guó)分站站群網(wǎng)站搭建更好做SEO營(yíng)銷。
創(chuàng)新互聯(lián)(www.cdcxhl.com)四川成都IDC基礎(chǔ)服務(wù)商,價(jià)格厚道。提供成都服務(wù)器托管租用、綿陽(yáng)服務(wù)器租用托管、重慶服務(wù)器托管租用、貴陽(yáng)服務(wù)器機(jī)房服務(wù)器托管租用。
當(dāng)前文章:深入探究:Linux中的NVCC編譯器 (linux nvcc)
網(wǎng)站路徑:http://fisionsoft.com.cn/article/dppjjsd.html


咨詢
建站咨詢
