当我在GPU上进行采样时,例如
>> a = rand(3,5, 'gpuArray');
>> a = a > rand(size(a), 'gpuArray');
>> b = rand(5,3, 'gpuArray');
>> c = b * a; %where mistake happens,just said misuse *,
MTIMES do not fully support integer class,at least one input is scalar.
那我怎么解决这个问题呢? 只需使用
>> a = double(a);
>> b = rand(5,3, 'gpuArray');
>> c = b * a;
我知道我可以做到这一点,但是有没有更好的解决方案,比如我可以直接加倍?
答案 0 :(得分:1)
没有其他“不错”的解决方案。正如您已经发现的那样,MATLAB 仅支持使用浮点类型(double
、single
等)的矩阵乘法。这是 MATLAB 中易于理解的行为。您必须确保这两种类型都是受支持的类型。