matlab GPU 操做

從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時能夠缺省   
相關文章
相關標籤/搜索