[討論] 初學者 GPU 運算觀念

看板MATLAB作者 (隱居處)時間7年前 (2017/09/23 01:31), 7年前編輯推噓2(206)
留言8則, 3人參與, 最新討論串1/1
上網找一些資料,發現目前研究的題目似乎很適合用GPU來進行計算,所以最近想要學習 使用GPU來增加工作效率,不過有些基本觀念想問一下 我先參考了張正星老師的網頁範例(最後一個範例) https://goo.gl/tnoJai 運算時間可以壓縮到1/1000以下,不過網頁裡有提到這個時間不包含資料搬移,後來發現 這個範例在我的電腦上用GPU計算總消耗時間還比CPU更多,我就認為問題應該是出在資料 搬移消耗太多時間,如果沒有這個步驟應該就會非常快 但是後來我又找到下面這個MATLAB官網的教學影片,他有提到可以直接在GPU上定義變數 https://goo.gl/4mQU3K 這樣一來就可以減少用gpuArray搬移資料所花費的時間,我預期計算總消耗時間應該可 以大幅降低,不過我在我的電腦上跑發現跟先在CPU上定義再搬移資料比起來差不了多少 我直接照抄他的程式(影片4分15秒左右),另外多加了一個用gpuArray搬移資料的case M=300; K=500; N=100; P=200; tic; A=rand(M,K); B=rand(K,N,P); C=zeros(M,N,P); for I=1:P C(:,:,I)=A*B(:,:,I); end t=toc; disp(['CPU ' num2str(t)]) tic; A=gpuArray(A); B=gpuArray(B); C=gpuArray(C); for I=1:P C(:,:,I)=A*B(:,:,I); end wait(gpuDevice) t=toc; disp(['CPU transfer to GPU ' num2str(t)]) tic; A=rand(M,K,'gpuArray'); B=rand(K,N,P,'gpuArray'); C=zeros(M,N,P,'gpuArray'); for I=1:P C(:,:,I)=A*B(:,:,I); end wait(gpuDevice) t=toc; disp(['GPU ' num2str(t)]) tic; A=rand(M,K,'gpuArray'); B=rand(K,N,P,'gpuArray'); C3=pagefun(@mtimes,A,B); wait(gpuDevice) t=toc; disp(['GPU pagefun ' num2str(t)]) 執行結果是 CPU 1.3239 CPU transfer to GPU 2.5428 (用gpuArray搬移) GPU 2.3113 GPU pagefun 0.78102 雖然直接在GPU上定義是比用從CPU上搬移過去快,但是快不了多少,而且還是比用CPU慢 請問這是為什麼? 我原本是預期因為沒有搬移,所以速度應該遠快於用CPU,還是除了 張老師那個網頁提到的搬移資料之外有其他的原因會拖慢計算時間呢? 感恩~ ==== 順帶一提我的電腦是acer windows 8.1 筆電 處理器 Intel(R) Pentium(R) CPU N3540 @ 2.16 GHz 顯示卡 NVIDIA GEFORCE 810M 還有為了能在MATLAB上用GPU運算今天剛安裝的driver CUDA version 7.5 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.235.65 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1506101491.A.93C.html

09/23 09:40, , 1F
我測Example-3沒啥問題
09/23 09:40, 1F
請問一下你的沒有問題是指? ※ 編輯: kanonehilber (27.247.43.35), 09/23/2017 12:17:48

09/23 14:59, , 2F
GPU 也是要vectorize的
09/23 14:59, 2F

09/23 18:10, , 3F
加速比 比網頁上的還要快XD
09/23 18:10, 3F

09/23 19:02, , 4F
我也比他的快XD
09/23 19:02, 4F

09/23 19:02, , 5F
請問vectorize大概是一個什麼樣的概念,對MATLAB的
09/23 19:02, 5F

09/23 19:02, , 6F
構造不太了解 謝謝
09/23 19:02, 6F

09/24 13:14, , 7F
簡單講就是不要用明顯的for loop,多用內建函數。
09/24 13:14, 7F

09/25 04:05, , 8F
原來如此 感恩 我再慢慢研究
09/25 04:05, 8F
文章代碼(AID): #1PnKZpay (MATLAB)
文章代碼(AID): #1PnKZpay (MATLAB)