Projet

Général

Profil

CArMA » Historique » Version 7

Damien Gratadour, 10/11/2013 15:23

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.