2016-09-07 9 views
-1

4xGPUのTesla K80でコンピュータを受け取りました.MFTの計算を高速化するためにMatlab PCTのparforループを試していますが、まだ遅いです。複数のTesla K80 GPUとparforループ

% 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をシングルGPUとして使用するにはどうすればよいですか?

メルシー、ニコラス

+0

K80 GPUはマルチチップGPUボードです。各K80には2つのGK210(それぞれ12 GBのGDDR5)があります。これら2つのチップは、PCIeスイッチを介して接続されています。ユーザープレゼンテーション(CUDAなど)から、各K80ボードには2つのGPUが含まれているため、8人の作業者が4つのボード×2 = 8つのGPUから使用できる可能性があります。 – Hopobcn

答えて

1

私はのparforは、マルチGPUシステムのために働くことを疑います。スピードが重要であり、あなたがあなたのGPUをフルに活用したい場合は、私はCUFFTライブラリを使用して、独自の小さなCUDAスクリプトを書くことをお勧め: http://www.mathworks.com/help/distcomp/run-mex-functions-containing-cuda-code.html

http://docs.nvidia.com/cuda/cufft/#multiple-GPU-cufft-transforms

ここでCUDAコードを含むあなたのMEXファイルを作成する方法であります

0

あなたのクイック返信とリンクに感謝します。私がCUDAを避けようとしていたのは事実ですが、FFTを広めるための最良の選択肢のようです。 私はparforとspmdが複数のGPUで素晴らしいツールだと思っていましたが。

関連する問題