FFT spread to multiple GPU's ?

6 views (last 30 days)
Nicolas Burdet
Nicolas Burdet on 31 Aug 2016
Answered: Joss Knight on 5 Oct 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

Answers (1)

Joss Knight
Joss Knight on 5 Oct 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.

Categories

Find more on Manage Products in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!