從Matlab2013版本開始,matlab將能夠直接調用gpu進行並行計算,而再也不須要安裝GPUmat庫。這一改動的好處是原有的matlab內置函數均可以直接運用,只要數據格式是gpuArray格式的,那麼計算過程會自動的調用GPU進行計算,不可謂不方便。web
具體操做起來,只要知道下面幾個函數就能夠像編寫簡單的m文件同樣,進行matlab的GPU編程:
1.GPU設備確認函數
1)n=gpuDeviceCount
%返回設備上的GPU數目
2)
gpuDevice
%選擇GPU設備
D=gpuDevice or gpuDevice(): 若是當前還未設置選擇的GPU,則選擇默認的GPU,D是返回對象;若是已經設 置了GPU,則返回設置的GPU對象。
D=gpuDevice(IDX): 表示選擇IDX對應的GPU設置,D是返回對象
%PS: 目前的GPU設置通常至少包含兩個GPU,分別用1和2表示對應的IDX。
3)
reset(gpudev)
%清空gpu的內存,相似matlab的clear的功能。其中gpudev是gpuDevice所返回的對象。
2.GPU以CPU之間的交互
1)
gpuArray(CPU-->GPU)
主要有兩個功能:
I) 將CPU內存數據傳導到GPU內存中
例子-1:
X=rand(10,'single'); %定義在CPU上的一個10x10的隨機初始化數組
GX=gpuArray(X); %在GPU開始數組GX,而且將X的值賦給GX
GX2=GX.*GX; %GPU上執行數組對應位置的點乘
II)在GPU內存中隨機初始化一些內存數據。
例子-2:
GX=rand(10,'gpuArray'); %直接在GPU設備上隨機初始化一個10x10的數組
%%PS:經常使用的隨機初始化函數有:eye, ones, zeros, rand, randi, randn.
2)
gather(GPU-->CPU)
主要是將GPU內存中的數據拷貝回CPU內存中。
繼續例子-1
X2=gather(GX2) %將GPU內存中的數組GX2賦值給CPU中的X2
3)
TF=existOnGPU(DATA)
用於判斷DATA是否存在於GPU內存中。若是不存在則返回false。
3.計算效率統計
t=gputimeit(F,N) %返回執行F操做N次所需的時間,當N=1時能夠缺省