3.3.1.3.2 : Le fichier phoenix_cuda_check.c
Développons le fichier phoenix_cuda_check.c :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <stdlib.h>            //pour avoir abort()
#include "phoenix_cuda_check.h"

#include <cuda_runtime_api.h>  //pour avoir cudaGetLastError(), cudaGetErrorString()

///Check is a cuda call was done well
/**	@param linenr : line à laquelle on appelle la fonction
 * 	On utilise cette fonction comme ceci :
 * 		phoenix_cudaCheckNoErr(__LINE__)
 * 
 * 	Une macro existe pour remplacer cet appel de fonction :
 * 		PLIB_CUDA_CHECK
*/
void phoenix_cudaCheckNoErr(int linenr){
	cudaError_t err = cudaGetLastError();
	if(err != cudaSuccess){
		printf("phoenix_cudaCheckNoErr : Erreur ligne %d : %s \n", linenr, cudaGetErrorString(err));
		abort();
	}
}

///Check is a cuda call was done well
/**	@param linenr : line à laquelle on appelle la fonction
 * 	@param fileName : nom du fichier dans lequel est l'appel de la fonction
 * 	On utilise cette fonction comme ceci :
 * 		phoenix_cudaCheckNoErr(__LINE__)
 * 
 * 	Une macro existe pour remplacer cet appel de fonction :
 * 		PLIB_CUDA_CHECK
*/
void phoenix_cudaCheckNoErrFileName(int linenr, const char* fileName){
	cudaError_t err = cudaGetLastError();
	if(err != cudaSuccess){
		printf("phoenix_cudaCheckNoErr : Fichier '%s' Erreur ligne %d : %s \n", fileName, linenr, cudaGetErrorString(err));
		abort();
	}
}


Le fichier phoenix_cuda_check.c complet.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/***************************************
	Auteur : Pierre Aubert
	Mail : pierre.aubert@lapp.in2p3.fr
	Licence : CeCILL-C
****************************************/

#include <stdio.h>
#include <stdlib.h>            //pour avoir abort()
#include "phoenix_cuda_check.h"

#include <cuda_runtime_api.h>  //pour avoir cudaGetLastError(), cudaGetErrorString()

///Check is a cuda call was done well
/**	@param linenr : line à laquelle on appelle la fonction
 * 	On utilise cette fonction comme ceci :
 * 		phoenix_cudaCheckNoErr(__LINE__)
 * 
 * 	Une macro existe pour remplacer cet appel de fonction :
 * 		PLIB_CUDA_CHECK
*/
void phoenix_cudaCheckNoErr(int linenr){
	cudaError_t err = cudaGetLastError();
	if(err != cudaSuccess){
		printf("phoenix_cudaCheckNoErr : Erreur ligne %d : %s \n", linenr, cudaGetErrorString(err));
		abort();
	}
}

///Check is a cuda call was done well
/**	@param linenr : line à laquelle on appelle la fonction
 * 	@param fileName : nom du fichier dans lequel est l'appel de la fonction
 * 	On utilise cette fonction comme ceci :
 * 		phoenix_cudaCheckNoErr(__LINE__)
 * 
 * 	Une macro existe pour remplacer cet appel de fonction :
 * 		PLIB_CUDA_CHECK
*/
void phoenix_cudaCheckNoErrFileName(int linenr, const char* fileName){
	cudaError_t err = cudaGetLastError();
	if(err != cudaSuccess){
		printf("phoenix_cudaCheckNoErr : Fichier '%s' Erreur ligne %d : %s \n", fileName, linenr, cudaGetErrorString(err));
		abort();
	}
}


Vous pouvez télécharger le fichier ici.