Matlab GPU计算中G2 = G. * G和G2 = G * G之间的差异

时间:2014-01-16 19:25:39

标签: matlab

以下代码中G2 = G .* GG2 = G * G之间的区别是什么?为什么我得到第一个代码GPU加载100%,第二个我得到GPU负载和内存控制器负载传感器在gpu-z 100%?

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

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

运算符*用于矩阵乘法,其中维度必须匹配。有时你可能想要通过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