我們在使用Matlab進(jìn)行一些數(shù)據(jù)量巨大或者復(fù)雜的計算時,即便使用cpu進(jìn)行多線程并行計算,有時候速度仍然不盡人意,在這種時候我們可以嘗試使用GPU進(jìn)行加速計算,會有令人意想不到的效果。 首先Matlab的GPU加速目前僅支持NVDIA(英偉達(dá))的顯卡,如果不確定自己的顯卡型號,可以在Matlab的命令行中鍵入: gpuDevice() 如下圖所示即可查看顯卡型號 接下來我們通過一個簡單的案例對比cpu和gpu運算的速度。 案例為創(chuàng)建一個5000x5000的隨機矩陣,并求出該矩陣的特征向量及特征值 首先是通過cpu正常求解,代碼如下 clcclearclose allA=rand(5000,5000);%創(chuàng)建隨機矩陣tic[v1,d1]=eig(A);%求解特征向量v1,特征值d1toc 運行后我們看到計算時間為:52.99s 接下來使用GPU加速進(jìn)行計算,其原理就是將數(shù)據(jù)從CPU中轉(zhuǎn)移到GPU中,代碼如下: clcclearclose allB=rand(5000,5000);%創(chuàng)建隨機矩陣B=single(B);%將矩陣轉(zhuǎn)換為單精度(gpu更擅長計算單精度數(shù)據(jù))B=gpuArray(B);%將數(shù)據(jù)由cpu轉(zhuǎn)移至gputic[v2,d2]=eig(B);%求解特征向量v2,特征值d2toc 運行計算后我們可以看到計算時間僅為:11.34s 通過上述簡單案例可以發(fā)現(xiàn)在計算數(shù)據(jù)量龐大的問題時,使用GPU加速可以獲得成倍的速度提升,大家不妨一試。 |
|