2016-09-07 4 views
-1

Я получил компьютер с Tesla K80 4xGPU, и я пытаюсь создать парные петли из Matlab PCT, чтобы ускорить расчет FFT, и он еще медленнее.Несколько графических процессоров Tesla K80 и парные петли

Вот что я пытаюсь:

% 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 в качестве одного графического процессора?

Merci, Николас

+0

Графический процессор K80 - это плата с несколькими чипами GPU. Каждый K80 обеспечивает два GK210 (каждый с 12 ГБ GDDR5). Эти два чипа подключаются через PCIe-переключатель. В зависимости от пользователя (CUDA и т. Д.) Каждая плата K80 содержит два графических процессора, поэтому возможно, что ваши 8 работников состоят из 4-х плат x 2 = 8 GPU. – Hopobcn

ответ

1

Я сомневаюсь, что parfor работает для систем с несколькими GPU. Если скорость имеет решающее значение, и вы хотите, чтобы в полной мере использовать ваши графические процессоры, я предлагаю, чтобы написать свой собственный сценарий немного CUDA с использованием библиотеки CUFFT: http://docs.nvidia.com/cuda/cufft/#multiple-GPU-cufft-transforms

Вот как написать свой файл Mex, содержащий код CUDA: http://www.mathworks.com/help/distcomp/run-mex-functions-containing-cuda-code.html

0

большое спасибо за ваш быстрый ответ и за ссылки! Это правда, что я пытался избежать CUDA, но, похоже, лучший вариант для распространения БПФ. Хотя я думал, что parfor и spmd были отличными инструментами для нескольких графических процессоров.

Смежные вопросы