2016-09-07 2 views
-1

J'ai reçu un ordinateur avec Tesla K80 4xGPU et j'essaie les boucles parfor de Matlab PCT pour accélérer le calcul de FFT et c'est encore plus lent.Plusieurs GPU Tesla K80 et boucles parfor

Voici ce que je suis en train:

% 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 !!! 

Pourquoi ouverture 8 travailleurs plus rapide que, en principe, j'emmagasinés mes variables dans 4gpu est seulement (sur 8)?

De même, comment utiliser un Tesla K80 comme un seul GPU?

Merci, Nicolas

+0

Le GPU K80 est une carte GPU multi-chip. Chaque K80 fournit deux GK210 (chacun avec GDDR5 de 12 Go). Ces deux puces sont connectées via un commutateur PCIe. Du point de vue de l'utilisateur (CUDA, etc.), chaque carte K80 contient deux GPU, il est donc possible que vos 8 travailleurs proviennent de 4 cartes x 2 = 8 GPU disponibles. – Hopobcn

Répondre

0

merci beaucoup pour votre réponse rapide et pour les liens! Il est vrai que j'essayais d'éviter CUDA mais cela semble être la meilleure option pour répartir les FFT. Bien que je pensais que parfor et spmd étaient d'excellents outils pour plusieurs GPUs.