Matlab 使用GPU進行濾波運算

2021-07-02 00:01:15 字數 1900 閱讀 7840

從matlab2013版本開始,matlab將可以直接呼叫gpu進行平行計算,而不再需要安裝gpumat庫。這一改動的好處是原有的matlab內建函式都可以直接運用,只要資料格式是gpuarray格式的,那麼計算過程會自動的呼叫gpu進行計算

具體操作起來,只要知道下面幾個函式就可以像編寫簡單的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時可以預設

4.實際例子,用gpu來進行fft濾波

那麼現在比如說我想對乙個很長的數列進行fft濾波,待處理的數列received_sig有1270000個數,而濾波器本身序列matched_sig也有2540個數。如果簡單的使用filter(matched_sig,1,filtered_sig)指令,執行一次耗時17秒。如果多執行幾次,所耗費的時間是無法承受的。而如果先將received_sig丟進gpu裡面,讓gpu來進行fft運算,就能大大節省時間。

下面是相關的**

g_received_sig=gpuarray(received_sig) ; 

g_get_sig=filter(matched_sig,1,g_received_sig) ;

get_sig=gather(g_get_sig) ;

其中,gpuarray將變數從cpu拷進gpu裡面,進行完fft運算以後,通過gather從gpu內拷出來。實際證明執行一次這樣的指令平均耗時3.3秒,大大減少了所需要的時間。

還有一點要說明的是,盡量不要在需要gpu運算的部分有判斷,迴圈等語句,這樣會讓gpu運算的效率急劇下降,因為gpu跟cpu之間的頻繁互動也是很耗費時間的。

matlab呼叫gpu進行矩陣運算

最近在使用matlab計算矩陣的特徵值時,遇到很大的困難,對於乙個30000 30000的矩陣,特徵值計算一次需要花近三個小時,矩陣是非常稀疏 且有乙個零特徵根 的,將矩陣轉成稀疏矩陣形式後,只算最小的幾個特徵值,速度上很快,但是每次算出來的特徵值都不一樣。不知道原因出在 可能跟矩陣有乙個零特徵值有...

使用matlab對輸入資料進行卡爾曼濾波

使用matlab對輸入資料進行卡爾曼濾波。簡單說明一下程式中的資料。假設一輛汽車從初始點 0,10 開始行駛,初始速度沿y軸正方向10m s。然後在觀測途中向右先加速再減速變換車道。整個過程其實有x軸座標,y軸座標,x軸速度,y軸速度以及x軸的加速度這5個物理量。但在卡爾曼濾波時我只用了x軸座標,y...

基於matlab對ECG訊號進行濾波處理

由微控制器採集心率資料,擷取部分資料處理如下 前提 根據取樣定理,心率訊號取樣頻率為50hz 大於心率的頻率兩倍 得帶資料訊號資料來源 b.txt 檔案。1.原始資料的採集擷取有效部分分析。2.資料濾波 50hz的工頻干擾以及放大器本身的漂移 要根據頻譜具體分析 3.fda數字濾波器設計,相應係數的...