0

我有 4 个 GPU 设备(每个 11GB 内存)。现在,我想添加两个大矩阵 A 和 B(每个 6GB),这样一个设备的内存中就不可能有两个矩阵。我想知道在这种情况下如何执行添加?

例如,有没有办法使用多个 GPU 执行加法运算,一个 GPU 用于矩阵 A,一个用于矩阵 B,第三个用于结果矩阵 C?

4

1 回答 1

0

您最好的选择是对大型数组进行分区,类似于 MATLAB 的distributed数组所做的事情。distributed(不幸的是,您不能组合gpuArray,因此您必须手动执行操作)。基本思想是做一些像这样的事情:

numRows = 4000;
spmd
    myNumCols = 4000 / numlabs; % might need to adjust if doesn't divide evenly
    myA = rand(numRows, myNumCols, 'gpuArray');
    myB = rand(numRows, myNumCols, 'gpuArray');
    myC = myA + myB;
end

在此之后,每个工人都有一部分整体C存储在myC.

于 2020-11-02T11:22:55.437 回答