В Matlab 2012 функции массива GPU и связанные с ним функции полностью интегрированы в MATLAB, поэтому вам, возможно, не понадобится использовать Jacket для достижения того, что вы пытаетесь сделать.
В сумме поставьте gpuDevice(deviceID);
передпри выполнении команд графического процессора, следующие коды будут запущены на deviceID
th GPU.Например,
gpuDevice(1);
a = gpuArray(rand(3)); // a is on the first GPU memory
gpuDevice(2);
b = gpuArray(rand(4)); // b is on the second GPU memory
Для запуска нескольких графических процессоров.Проще говоря,
c = cell(1,num_device);
parfor i = 1:num_device
gpuDevice(i);
a = gpuArray(magic(3));
b = gpuArray(rand(3));
c{i} = gather(a*b);
end
Вы можете увидеть использование памяти GPU, набрав nvidia-smi
в командной строке системы.
Этот способ установки идентификатора GPU кажется странным, но это обычный способустановить идентификатор GPU.В CUDA, если вы хотите использовать определенный GPU, тогда cudaSetDevice(gpuId)
и следующие коды будут работать на gpuId
th GPU.(Индексирование 0 оснований)
---------------------- РЕДАКТИРОВАТЬ ----------------
Протестировано и подтверждено на MATLAB 2012b, MATLAB 2013b.
Проверено с помощью nvidia-smi
, что код на самом деле использует другую память GPU.Возможно, вам придется увеличить его очень большое rand(5000)
и проверить очень быстро, поскольку временные переменные a
и b
исчезнут после окончания цикла for