GSvit documentation

open source FDTD solver with GPU support

User Tools

Site Tools


opt:graphics_cards

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
opt:graphics_cards [2018/01/24 08:14]
127.0.0.1 external edit
opt:graphics_cards [2018/08/31 08:57]
pklapetek
Line 11: Line 11:
  
 To use GPU for a calculation is not straightforward,​ unfortunataly. We cannot simply take a conventional PC executable and run it on GPU. Both data processing and memory model is completely different for GPU and for CPU and the part of the code that should be run on GPU (called kernel) must be written to fulfill these conditions. GPU is equipped by several multiprocessors,​ consisting of a large number of processors. Many hundreds of threads (kernel calls) grouped in thread blocks can be processed simultaneously on GPU, which is the basis of tremendous speedup that we can achieve. Memory available on GPU can be divided into a global memory - accessible by all the multiprocessors,​ a shared memory - accessible by processors within one multiprocessor,​ and a local memory - accessible by single processor. All the memories are hardware limited (for each type of GPU differently). We refer to Nvidia CUDA developer zone for further details. To use GPU for a calculation is not straightforward,​ unfortunataly. We cannot simply take a conventional PC executable and run it on GPU. Both data processing and memory model is completely different for GPU and for CPU and the part of the code that should be run on GPU (called kernel) must be written to fulfill these conditions. GPU is equipped by several multiprocessors,​ consisting of a large number of processors. Many hundreds of threads (kernel calls) grouped in thread blocks can be processed simultaneously on GPU, which is the basis of tremendous speedup that we can achieve. Memory available on GPU can be divided into a global memory - accessible by all the multiprocessors,​ a shared memory - accessible by processors within one multiprocessor,​ and a local memory - accessible by single processor. All the memories are hardware limited (for each type of GPU differently). We refer to Nvidia CUDA developer zone for further details.
 +
 +To check if the graphics card installed on your computer is suitable for GSvit calculations and if GSvit was installed with graphics card support at all, you can run the solver with parameter "test 0", e.g. on Linux system:
 +
 +<​html>​
 +<pre>
 +klapetek@pejsek:​~/​rungsvit/​bin>​ ./gsvit test 0
 +Running GSvit tests at level 0
 +System has 32 cores
 +Gsvit is installed at /​home/​klapetek/​rungsvit/​bin
 +Program is compiled with GPU support
 +Searching for available GPUs...
 +Found 4 GPUs
 +The Properties of the Device with ID 0 are
 +Device Name             : Tesla K40m
 +Device Memory Size      : 3489202176
 +Block Shared memory size: 49152
 +Max grid size           : 2147483647x65535x65535
 +Max threads dim         : 1024x1024x64
 +The Properties of the Device with ID 1 are
 +Device Name             : Tesla K20Xm
 +Device Memory Size      : 1744371712
 +Block Shared memory size: 49152
 +Max grid size           : 2147483647x65535x65535
 +Max threads dim         : 1024x1024x64
 +The Properties of the Device with ID 2 are
 +Device Name             : Tesla K20Xm
 +Device Memory Size      : 1744371712
 +Block Shared memory size: 49152
 +Max grid size           : 2147483647x65535x65535
 +Max threads dim         : 1024x1024x64
 +The Properties of the Device with ID 3 are
 +Device Name             : Tesla K20Xm
 +Device Memory Size      : 1744371712
 +Block Shared memory size: 49152
 +Max grid size           : 2147483647x65535x65535
 +Max threads dim         : 1024x1024x64
 +</​pre>​
 +</​html>​
 +
 +This means that you can use four different GPUs on this system (which does not usually happen on a standard computer). GSvit does not support use of all of them at once, but you can still run up to four different instances on different cards. The basic settings for using the GPU are therefore whether to use it at all (GPU directive in the parameter file) and eventually which one to use (UGPU directive in the parameter file). GPUs are numbered from 0, exactly the same way as what <​tt>​gsvit test 0</​tt>​ outputs, so these settings in the parameter file:
 +
 +<​html>​
 +<tt>
 +GPU<​br>​
 +1<br>
 +
 +<br>
 +UGPU<​br>​
 +0<br>
 +</tt>
 +</​html>​
 +
 +will run the calculation on the Tesla K40m card on our system.
 +
 +
opt/graphics_cards.txt ยท Last modified: 2018/09/04 17:24 by pklapetek