MATLAB GPU编程基础
原文地址:http://blog.sina.com.cn/s/blog_863f5cf90102uyrh.html
從Matlab2013版本開始,matlab將可以直接調(diào)用gpu進(jìn)行并行計(jì)算,而不再需要安裝GPUmat庫。這一改動的好處是原有的matlab內(nèi)置函數(shù)都可以直接運(yùn)用,只要數(shù)據(jù)格式是gpuArray格式的,那么計(jì)算過程會自動的調(diào)用GPU進(jìn)行計(jì)算,不可謂不方便。
具體操作起來,只要知道下面幾個函數(shù)就可以像編寫簡單的m文件一樣,進(jìn)行matlab的GPU編程:
1.GPU設(shè)備確認(rèn)函數(shù)
1)n=gpuDeviceCount??%返回設(shè)備上的GPU數(shù)目
2)gpuDevice?????????%選擇GPU設(shè)備
???D=gpuDeviceor gpuDevice(): 如果當(dāng)前還未設(shè)置選擇的GPU,則選擇默認(rèn)的GPU,D是返回對象;如果已經(jīng)設(shè) ???置了GPU,則返回設(shè)置的GPU對象。
???D=gpuDevice(IDX):表示選擇IDX對應(yīng)的GPU設(shè)置,D是返回對象
???%PS: 目前的GPU設(shè)置一般至少包含兩個GPU,分別用1和2表示對應(yīng)的IDX。
3)reset(gpudev)?%清空gpu的內(nèi)存,類似matlab的clear的功能。其中g(shù)pudev是gpuDevice所返回的對象。
?
2.GPU以CPU之間的交互
1)gpuArray(CPU-->GPU)
???主要有兩個功能:
???I) 將CPU內(nèi)存數(shù)據(jù)傳導(dǎo)到GPU內(nèi)存中
???例子-1:
???X=rand(10,'single');%定義在CPU上的一個10x10的隨機(jī)初始化數(shù)組
???GX=gpuArray(X);?????%在GPU開始數(shù)組GX,并且將X的值賦給GX
???GX2=GX.*GX; ????????%GPU上執(zhí)行數(shù)組對應(yīng)位置的點(diǎn)乘
???II)在GPU內(nèi)存中隨機(jī)初始化一些內(nèi)存數(shù)據(jù)。
???例子-2:
???GX=rand(10,'gpuArray');%直接在GPU設(shè)備上隨機(jī)初始化一個10x10的數(shù)組
???%%PS:常用的隨機(jī)初始化函數(shù)有:eye,ones, zeros, rand, randi, randn.
2)gather(GPU-->CPU)
???主要是將GPU內(nèi)存中的數(shù)據(jù)拷貝回CPU內(nèi)存中。
???繼續(xù)例子-1
???X2=gather(GX2)??????%將GPU內(nèi)存中的數(shù)組GX2賦值給CPU中的X2
3)TF=existOnGPU(DATA)
???用于判斷DATA是否存在于GPU內(nèi)存中。如果不存在則返回false。
?
3.計(jì)算效率統(tǒng)計(jì)
??t=gputimeit(F,N)?????%返回執(zhí)行F操作N次所需的時間,當(dāng)N=1時可以缺省? ?
總結(jié)
以上是生活随笔為你收集整理的MATLAB GPU编程基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac 电脑如何安装mac os 和wi
- 下一篇: 受限玻尔兹曼机准备知识——蒙特卡洛方法