#matlab #out-of-memory #multiple-gpu
#matlab #нехватка памяти #несколько графических процессоров
Вопрос:
У меня есть 4 устройства с графическим процессором (11 ГБ памяти для каждого). Теперь я хочу добавить две большие матрицы A и B (по 6 ГБ для каждой), чтобы невозможно было иметь две матрицы в памяти одного отдельного устройства. Я хотел бы знать, как выполнить добавление в этом случае?
Например, есть ли способ выполнить сложение с использованием нескольких графических процессоров таким образом, чтобы один графический процессор для матрицы A, один для матрицы B и третий для результирующей матрицы C?
Ответ №1:
Лучше всего было бы разделить большие массивы, подобно тому, что distributed
делают массивы MATLAB. (К сожалению, вы не можете объединить distributed
an 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
.