CArMA » Historique » Version 8
Damien Gratadour, 10/11/2013 15:27
1 | 1 | Damien Gratadour | h1. CArMA |
---|---|---|---|
2 | |||
3 | CArMA is the C++ API for Massively parallel Applications. It provides a set of C++ classes for an easy integration of GPU accelerated numerical tools into complex applications. |
||
4 | 2 | Damien Gratadour | |
5 | 6 | Damien Gratadour | CArMA is built on top of the CUDA toolkit from NVIDIA. CUDA provides a large collection of tools to perform scientific computing (CuFFT, CuBLAS, CuRAND). Moreover, several libraries like MAGMA have been developed using CUDA and provide additional features very useful for scientific computing. |
6 | 3 | Damien Gratadour | |
7 | 5 | Damien Gratadour | !{width:70%}https://projets-lesia.obspm.fr/attachments/download/696/carma.png! |
8 | 7 | Damien Gratadour | |
9 | The goal of CArMA is to provide an easy access to rather low level GPU features through the use of C++ classes. 3 classes are used to control the CUDA context: |
||
10 | * the CArMA device providing information on a specific device |
||
11 | * the CArMA context itself, regrouping the information about the overall system configuration |
||
12 | * the CArMA streams, containers for a collection of wrappers to CUDA streams |
||
13 | |||
14 | CArMA provides also 2 main classes for the handling of data on the GPU memory and the system memory: |
||
15 | * the CArMA object providing a container for the manipulation of data on the GPU |
||
16 | * the CArMA host object, providing a container for data on the system memory tagged and aligned so as to be accessed by the GPU DMA engine |
||
17 | |||
18 | Additionally, CArMA provides a set of wrappers to various libraries part of or based on the CUDA toolkit to manipulate CArMA objects and perform optimized computations. |
||
19 | 8 | Damien Gratadour | |
20 | CArMA can be used to easily build higher level applications. The [[SuTrA]] library is an exemple of such use. CArMA can also be bound to an interpreted language for a simplified access to basic GPU features. The [[YoGA]] plugin is an exemple of such use. |