日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MATLAB上的GPU加速计算——学习笔记

發布時間:2023/12/2 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MATLAB上的GPU加速计算——学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MATLAB目前只支持Nvidia的顯卡。如果你的顯卡是AMD的或者是Intel的,就得考慮另尋它路了。

MATLAB可謂工程計算中的神器,一方面它自帶豐富的函數庫,另一方面它所有的數據都是內建的矩陣類型,最后畫圖也方便,因此解決一些小規模的計算問題如果對性能要求不高的話開發效率遠大于C++ FORTRAN之類傳統手段。不過受限于PC的計算能力,對于一些大規模數據處理它就力不從心了。還好最近Matlab開發了cuda的wrapper,計算能力因而上升了一個數量級。

那么怎樣在MATLAB上做GPU計算呢?
首先要進行數據的初始化。有兩種方法可以進行初始化:一是先在CPU上設置好數據然后拷貝到GPU;二是直接在GPU上初始化數據。先看看第一種方案:
N = 6; M = magic(N); G = gpuArray(M);
可見把數據從CPU拷貝到GPU上非常簡單,只要B = gpuArray (A)就可以了。實際上MATLAB并沒有規定一個矩陣定義之后不能改類型,所以以下也是可以的:
M = gpuArray(M);
有時候GPU受限于硬件架構,單精度的計算遠快于雙精度。這時候可以考慮在拷貝的時候順便轉換一下精度: A = gpuArray(single(B));
如前所述,第二種方法是直接在GPU上設置數據: A = zeros(10, 'gpuArray'); 這時候運行size函數: size (A) 得到 100 100。所以A其實是一個二維數組。
也可以生成一個一維的隨機數組: r = gpuArray.rand(1, 100) % 一行,一百列 運行class函數: class(r) 得到 ans = gpuArray。可見這是一個在gpu上的數組。
下面就是對GPU數據進行操作。首先,MATLAB定義了GPU上豐富的庫函數,比如快速傅立葉變換: result = fft(r) 這樣result就是另一個GPU上的數組,存儲了對r做fft的結果。 加減乘除更不在話下: r2 = (real(result) + r ) / 2 作用是對result取實部之后加r再除以2.這里r2, r, result都是GPU上的數組。方便吧?
最后是如何把GPU上的數據回傳給CPU: B = gather (A); 其中A是GPU上的數據,B是CPU上的數據。B的內容在回傳之后等于A。
并不是所有的電腦都可以用MATLAB進行GPU加速計算。想知道自己的電腦有沒有這個能力,運行gpuDevice:
>> gpuDevice
ans =?
CUDADevice with properties:
? ? ? ? ? ? ? ? ? ? Name: 'GeForce GTX 650' ? ? ? ? ? ? ? ? ? ?Index: 1 ? ? ? ?ComputeCapability: '3.0' ? ? ? ? ? SupportsDouble: 1 ? ? ? ? ? ?DriverVersion: 6.5000 ? ? ? ? ? ToolkitVersion: 5 ? ? ? MaxThreadsPerBlock: 1024 ? ? ? ? MaxShmemPerBlock: 49152 ? ? ? MaxThreadBlockSize: [1024 1024 64] ? ? ? ? ? ? ?MaxGridSize: [2.1475e+09 65535 65535] ? ? ? ? ? ? ? ?SIMDWidth: 32 ? ? ? ? ? ? ?TotalMemory: 1.0737e+09 ? ? ? ? ? ? ? FreeMemory: 732377088 ? ? ?MultiprocessorCount: 2 ? ? ? ? ? ? ClockRateKHz: 1058500 ? ? ? ? ? ? ?ComputeMode: 'Default' ? ? GPUOverlapsTransfers: 1 ? KernelExecutionTimeout: 1 ? ? ? ? CanMapHostMemory: 1 ? ? ? ? ?DeviceSupported: 1 ? ? ? ? ? DeviceSelected: 1
MATLAB目前只支持Nvidia的顯卡。如果你的顯卡是AMD的或者是Intel的,就得考慮另尋它路了。 MATLAB目前只支持Nvidia的顯卡。如果你的顯卡是AMD的或者是Intel的,就得考慮另尋它路了。

總結

以上是生活随笔為你收集整理的MATLAB上的GPU加速计算——学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。