FFT spread to multiple GPU's ?

6 visualizzazioni (ultimi 30 giorni)
Nicolas Burdet
Nicolas Burdet il 31 Ago 2016
Risposto: Joss Knight il 5 Ott 2016
Hi, I just got 4 Tesla K80 and was wondering if it was possible to distribute a FFT calculation to more than one gpu ?
Also, I just did a small performance comparison between my Tesla K40 from my previous computer and the new one with 4xTesla K80 and it is 2x slower !
Something weird is the following :
for ii = 1:gpuDeviceCount
g = gpuDevice(ii);
fprintf(1,'Device %i has ComputeCapability %s \n', ...
g.Index,g.ComputeCapability)
end
Device 1 has ComputeCapability 3.7
Device 2 has ComputeCapability 3.0
Device 3 has ComputeCapability 3.7
Device 4 has ComputeCapability 3.7
Device 5 has ComputeCapability 3.7
Device 6 has ComputeCapability 3.7
Device 7 has ComputeCapability 3.7
Device 8 has ComputeCapability 3.7
Device 9 has ComputeCapability 3.7
Matlab is counting 9 gpu's and for the second one he is telling me it is a K120 instead of K80...I thought the two gpu's inside the K80 would work as a single !!
Cheers, Nicolas

Risposte (1)

Joss Knight
Joss Knight il 5 Ott 2016
I'm guessing you have a Quadro K120 GPU driving your graphics attached to your machine, or elsewhere on the PCI bus, is that possible?
The K80 is seen by the driver as two separate GPUs. Both have lower performance than a K40 on its own.
To use many GPUs at once you need to use a parallel pool, e.g.
parpool('local', gpuDeviceCount);
You can set each worker to use a different GPU (that is the default anyway). Then use a parallel construct such as parfor, parfeval, batch or spmd to do work on each worker. Keep communication between workers to a minimum and you should be able to get the performance improvements you are looking for.

Categorie

Scopri di più su Manage Products in Help Center e File Exchange

Tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by