Как использовать несколько графических процессоров в MATLAB — нехватка памяти на устройстве

#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 .