2014-01-16 58 views
0

以下代碼中G2 = G .* GG2 = G * G之間的區別是什麼?爲什麼我用第一代GPU加載100%,第二次我得到GPU負載和內存控制器負載傳感器都在100%gpu-z?在Matlab GPU計算中G2 = G * G和G2 = G * G之間的區別

X = rand(5000, 'double'); 
G = gpuArray(X); 
classUnderlying(G)   % Returns 'single' 

for m = 1:5000 
G2 = G .* G .* G .* G;   % Performed on GPU 
end 

whos G2      % Result on GPU 

X = rand(5000, 'double'); 
G = gpuArray(X); 
classUnderlying(G)   % Returns 'single' 

for m = 1:5000 
G2 = G * G * G * G;   % Performed on GPU 
end 

whos G2      % Result on GPU 

回答

1

操作*用於用於尺寸必須匹配的矩陣乘法。 somtimes你可能想要通過elemeny乘法或(元素明智乘法)使用元素,其中我們使用運算符.*

a = 1 1 1 
    1 1 1 
    1 1 1 

b = 2 2 2 
    2 2 2 
    2 2 2 

a * b = 6 6 6 
     6 6 6 
     6 6 6 

a .* b = 2 2 2 
     2 2 2 
     2 2 2 
+0

我已經添加了另一個問題,你能回答這個問題嗎? – Aurelius

+1

@FormlessCloud簡單地說,第二個操作的次數是第一個操作的2 * n倍(矩陣乘法要複雜得多) – rullof