Несколько графических процессоров Tesla K80 и парфор петли
Я получил компьютер с Tesla K80 от 4xGPU, и я пытаюсь использовать циклы parfor из Matlab PCT, чтобы ускорить вычисления FFT, и это все еще медленнее.
Вот что я пытаюсь:
% Pupil is based on a 512x512 array
parfor zz = 1:4
gd = gpuDevice;
d{zz} = gd.Index;
probe{zz} = gpuArray(pupil);
Essai{zz} = gpuArray(pupil);
end
tic;
parfor ii = 1:4
gd2 = gpuDevice;
d2{ii} = gd2.Index;
for i = 1:100
[Essai{ii}] = fftn(probe{ii});
end
end
toc
%%
Starting parallel pool (parpool) using the 'local' profile ... connected to 4 workers.
Elapsed time is 1.805763 seconds.
Elapsed time is 1.412928 seconds.
Elapsed time is 1.409559 seconds.
Starting parallel pool (parpool) using the 'local' profile ... connected to 8 workers.
Elapsed time is 0.606602 seconds.
Elapsed time is 0.297850 seconds.
Elapsed time is 0.294365 seconds.
%%
tic; for i = 1:400; Essai{1} = fftn( probe{1} ); end; toc
Elapsed time is 0.193579 seconds !!!
Почему открытие 8 рабочих происходит быстрее, так как в принципе я хранил свои переменные только в 4gpu (из 8)?
Кроме того, как использовать Tesla K80 в качестве одного графического процессора?
Мерси, Николас
2 ответа
Я сомневаюсь, что parfor работает для систем с несколькими GPU. Если скорость критична и вы хотите в полной мере использовать преимущества своих графических процессоров, я предлагаю написать свой собственный маленький скрипт CUDA с использованием библиотеки cuFFT: http://docs.nvidia.com/cuda/cufft/
Вот как написать ваш mex-файл, содержащий код CUDA: http://www.mathworks.com/help/distcomp/run-mex-functions-containing-cuda-code.html
Большое спасибо за ваш быстрый ответ и за ссылки! Это правда, что я пытался избежать CUDA, но это лучший вариант для распространения БПФ. Хотя я думал, что parfor и spmd были отличными инструментами для нескольких графических процессоров..