新聞中心
隨著計(jì)算機(jī)硬件的不斷發(fā)展,GPU(Graphics Processing Unit)已經(jīng)不再是僅僅用于圖形渲染的設(shè)備。GPU的并行計(jì)算能力,成為許多科學(xué)計(jì)算、數(shù)據(jù)分析等領(lǐng)域的研究者所喜愛的硬件加速平臺(tái)。CUDA(Compute Unified Device Architecture)是NVIDIA開發(fā)的并行計(jì)算平臺(tái)和編程模型,結(jié)合了經(jīng)典的C語言語法和并行計(jì)算模式,能夠顯著提高計(jì)算效率。本文將介紹在Linux系統(tǒng)下使用CUDA實(shí)現(xiàn)示例代碼的過程。

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站建設(shè)、合浦網(wǎng)絡(luò)推廣、微信小程序開發(fā)、合浦網(wǎng)絡(luò)營銷、合浦企業(yè)策劃、合浦品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供合浦建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
環(huán)境設(shè)置
在Linux系統(tǒng)上使用CUDA的前提是要安裝相應(yīng)的NVIDIA GPU驅(qū)動(dòng)。安裝方式多種多樣,這里不做過多介紹??梢匀VIDIA官網(wǎng)下載安裝程序,也可以通過apt-get等命令進(jìn)行安裝。還需要安裝CUDA Toolkit,以及nvcc(NVIDIA CUDA Compiler)編譯器。在安裝CUDA Toolkit的過程中,需要注意選擇與自己顯卡匹配的版本。安裝完成后,需要將nvcc所在路徑添加至環(huán)境變量中,以便在命令行中直接使用nvcc命令編譯CUDA代碼。
編寫示例代碼
我們將編寫一個(gè)簡單的例子,用于理解CUDA的編程流程。該代碼的功能是將一個(gè)數(shù)組中的數(shù)全部加一,然后輸出到控制臺(tái)。需要在CUDA中分配內(nèi)存,以供并行計(jì)算使用。代碼如下:
“`
#include
#define N 10
__global__ void addOne(int *a){
int tid = blockIdx.x * blockDim.x + threadIdx.x;
if(tid
a[tid] += 1;
}
}
int mn(){
int a[N], *dev_a;
cudaMalloc((void**)&dev_a, N*sizeof(int));
for(int i = 0; i
a[i] = i;
}
cudaMemcpy(dev_a, a, N*sizeof(int), cudaMemcpyHostToDevice);
addOne>>(dev_a);
cudaMemcpy(a, dev_a, N*sizeof(int), cudaMemcpyDeviceToHost);
for(int i = 0; i
printf(“%d “, a[i]);
}
printf(“\n”);
cudaFree(dev_a);
return 0;
}
“`
上述代碼中,我們在主函數(shù)中定義一個(gè)數(shù)組a,大小為N。然后使用cudaMalloc函數(shù)在GPU上分配內(nèi)存空間,大小為N*sizeof(int)。使用cudaMemcpy函數(shù)將主機(jī)內(nèi)存上的數(shù)組a復(fù)制到設(shè)備端(dev_a)的內(nèi)存中。接著,我們調(diào)用addOne>>(dev_a)函數(shù),使用1個(gè)線程塊,每個(gè)線程塊包含N個(gè)線程,對(duì)數(shù)組dev_a中的元素逐個(gè)加1。我們再次使用cudaMemcpy函數(shù)將設(shè)備端上的結(jié)果復(fù)制到主機(jī)端的數(shù)組a中。我們遍歷數(shù)組a并輸出到控制臺(tái)。在程序結(jié)束前,使用cudaFree函數(shù)釋放GPU上分配的內(nèi)存。
編譯并運(yùn)行代碼
編譯CUDA代碼的方式與編譯普通C語言代碼類似,使用nvcc命令進(jìn)行編譯。在命令行中輸入以下命令:
“`
$ nvcc add.cu -o add
“`
其中,add.cu 是CUDA代碼的文件名,add是生成的可執(zhí)行文件的名稱。如果出現(xiàn)錯(cuò)誤,需要檢查CUDA和GPU驅(qū)動(dòng)是否正確安裝。如果安裝位置在非默認(rèn)位置,需要將路徑添加至環(huán)境變量中。
運(yùn)行生成的可執(zhí)行文件,將會(huì)在控制臺(tái)上輸出從0到9的數(shù)組,每個(gè)數(shù)字都比原來大1。這意味著我們成功地使用了CUDA在GPU上進(jìn)行了并行計(jì)算。
小結(jié)
相關(guān)問題拓展閱讀:
- linux下CUDA程序一般怎么編譯
- linux下無cuda怎么pip安裝pytorch
linux下CUDA程序一般怎么編譯
我寫過一個(gè)Makefile,統(tǒng)純租祥一用nvcc編譯型手和鏈接就可以了,nvcc是兼容gcc和g++的。具體的可以模仿Nsight的編譯和鏈接選項(xiàng),你在Nsight IDE里面build你的工程試試,terminal里面會(huì)打印出IDE的編譯和鏈接選項(xiàng)的,都是做搏用的nvcc,依葫蘆畫瓢搬到你的Makefile里面就行了
編譯好的是什么類型的程悔薯序?c?還是java還是別的? 很多只能再命令橋前豎敏大行運(yùn)行的文件必須在終端執(zhí)行。 而且就算編譯好了,編譯好的可執(zhí)行文件是沒有可執(zhí)行權(quán)限的。 需要手動(dòng)添加才能運(yùn)行~ 希望你說具體點(diǎn)更好有截圖~
編譯好的是什么類型的程悔薯序?c?還是java還是別的? 很多只能再命令橋前豎敏大行運(yùn)行的文件必須在終端執(zhí)行。 而且就算編譯好了,編譯好的可執(zhí)行文件是沒有可執(zhí)行權(quán)限的。 需要手動(dòng)添加才能運(yùn)行~ 希望你說具體點(diǎn)更好有截圖~
直接用記事本寫都呀linux用nvcc編譯windows裝VS2023吧像cuda VS wizard用
linux下無cuda怎么pip安裝pytorch
1、先說清租一下什么是pip
pip 是“A tool for installing and managing Python packages.”,也就是說pip是python的軟件安裝工具
2、下面介紹怎么在linux下安裝pip
下載租正中pip到/usr/local/src
# cd /usr/local/src
# wget “” –no-check-certificate
如果提示:-bash: wget: command not found
那么安裝wget,執(zhí)行如下:
# yum -y install wget
解奪安裝pip
# tar -xzvf pip-1.5.4.tar.gz
# cd pip-1.5.4
# python setup.py install
如果安裝報(bào)下面的錯(cuò):
Traceback (most recent call last):
File “setup.py”, line 6, in
from setuptools import setup, find_packages
ImportError: No module named setuptools
那么就要先安裝setuptools包
(1)下載setuptools包
# wget
(2)解弊山壓setuptools包
# tar zxvf setuptools-2.0.tar.gz
# cd setuptools-2.0
(3)編譯setuptools
# python setup.py build
(4)開始執(zhí)行setuptools安裝
# python setup.py install
安裝完成setuptools包后,在重新執(zhí)行:
# cd /usr/local/src/pip-1.5.4
# python setup.py install
至此pip安裝完成
3、linux下pip使用參數(shù)
# pip –help
Usage:
pip
Commands:
installInstall packages.
uninstall Uninstall packages.
freezeOutput installed packages in requirements format.
listList installed packages.
showShow information about installed packages.
searchSearch PyPI for packages.
wheelBuild wheels from your requirements.
zipDEPRECATED. Zip individual packages.
unzipDEPRECATED. Unzip individual packages.
bundleDEPRECATED. Create pybundles.
helpShow help for commands.
General Options:
-h, –help Show help.
-v, –verbose Give more output. Option is additive, and can be used up to 3 times.
-V, –version Show version and exit.
-q, –quiet Give less output.
–log-filePath to a verbose non-appending log, that only logs failures. This log is active by default at /root/.pip/pip.log.
–log Path to a verbose appending log. This log is inactive by default.
–proxySpecify a proxy in the form proxy.server:port.
–timeoutSet the socket timeout (default 15 seconds).
–exists-action Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
–cert Path to alternate CA bundle.
linux下安裝caffe(無cuda)以及python接口
caffe(8)
主要過程稍微記錄一下:
1.安裝BLAS
sudo apt-get install libatlas-base-dev
2.安裝依賴項(xiàng)
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev protobuf-compiler liblmdb-dev
3.安裝glog
這個(gè)要FQ,我放在我的百度云上了。
tar zxvf glog-0.3.3.tar.gz
cd glog-0.3.3
./configure
make
sudo make install
4.安裝gflags
wget
unzip master.zip
cd gflags-master
mkdir build && cd build
export CXXFLAGS=”-fPIC” && cmake .. && make VERBOSE=1
make
sudo make install
這一步需要cmake,如果沒有安裝可以用 sudo apt-get install cmake 安裝。
5.安裝lmdb
git clone
cd mdb/libraries/liblmdb
make
sudo make install
如果沒有安裝Git,也要用 sudo apt-get install git 來安裝。
注:如果可以FQ,只用下面一句就可以安裝gflags,glog和lmdb了,省了3,4,5這三步。
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
6.下鏈宏蠢載Caffe
git clone
7.安裝Caffe
cd caffe
cp Makefile.config.example Makefile.config
因?yàn)檫@里沒有g(shù)pu,所以需要設(shè)置Makefile.config文件中的CPU_ON:= 1,把這句的注釋去掉就可以了。
然后編譯
make all
make test
make runtest
安裝好以后我們棚陪就可以試著在mnist上跑一下lenet了。
1.首先獲取mnist數(shù)據(jù)
cd caffe
./data/mnist/get_mnist.sh
2.然后創(chuàng)建lenet
./examples/mnist/create_mnist.sh
注意一定要在caffe的根目錄下運(yùn)行以下命令,否則會(huì)報(bào)“ build/examples/mnist/convert_mnist_data.bin: not found”的錯(cuò)誤,參見這里。
3.訓(xùn)練cnn
沒有g(shù)pu的話要記得把caffe/examples/mnist/lenet_solver.prototxt中的solver_mode設(shè)置成solver_mode: CPU。然后在根目錄下執(zhí)行:
./examples/mnist/train_lenet.sh
準(zhǔn)確率可以達(dá)到0.9912
因絕鬧為caffe的tutorial上有很大一部分是Python的,所以后來又安裝了一下python的接口。
1.首先安裝python
2.安裝pip
sudo apt-get install python-pip python-dev build-essential
3.運(yùn)行以下代碼安裝必要的依賴項(xiàng):
sudo pip install -r ./python/requirements.txt
4.這里我運(yùn)行了make clean以及其他編譯的caffe的命令,重新編譯了一次caffe,但我不確定是不是必須的。
5.在caffe的根目錄下運(yùn)行:
make pycaffe
這里遇到了一個(gè)問題:
virtual memory exhausted: Cannot allocate memory
make: Error 1
按照這里的方法增加Linux虛擬機(jī)的內(nèi)存就可以解決了。
6.把caffe/python的路徑加到python路徑中:
運(yùn)行python進(jìn)入python shell,然后運(yùn)行下列命令:
import sys
sys.path.append(“path/to/caffe/python/”)
exit()
linux cuda example的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux cuda example,Linux下的CUDA示例代碼實(shí)現(xiàn),linux下CUDA程序一般怎么編譯,linux下無cuda怎么pip安裝pytorch的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
新聞標(biāo)題:Linux下的CUDA示例代碼實(shí)現(xiàn)(linuxcudaexample)
當(dāng)前地址:http://www.fisionsoft.com.cn/article/dpohegi.html


咨詢
建站咨詢
