TP CUDA 5.0 / Exemple axpy
axpy (CUDA 5.0)
 Tout Classes Fichiers Fonctions Pages
Référence du fichier thrust_axpy.cu

MAIN : Calcul de \( \alpha \pmb{x} + \pmb{y} \) avec Thrust et cublas. Plus de détails...

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <cuda_runtime.h>
#include <curand.h>
#include <helper_functions.h>
#include <helper_cuda.h>
#include <cublas_v2.h>
#include <thrust/device_vector.h>
#include <thrust/device_ptr.h>
#include <thrust/host_vector.h>
#include <thrust/transform.h>
Graphe des dépendances par inclusion de thrust_axpy.cu:

Aller au code source de ce fichier.

Classes

struct  trans< T >
 défini une opération unaire pour utilisation avec thrust::transform Plus de détails...
 

Macros

#define CURAND_CALL(x)
 

Fonctions

void vector_axpy (const double a, const double *X, const double *Y, double *Z, int N)
 Calcul sur le CPU de \( \alpha \pmb{x} + \pmb{y} \).
 
double errorinf (const double *X, const double *Y, int N)
 Retourne la norme inf. entre deux tableaux de même dimension.
 
thrust::device_vector< double > UniformRandom (int N, double a, double b, unsigned int mainSeed)
 Retourne un vecteur de type thrust::device_vector<double> aléatoire.
 
void print (const thrust::device_vector< double > &V, int n)
 Affiche le contenu d'un vecteur de type thrust::device_vector<double>
 
void print (const thrust::host_vector< double > &V, int n)
 Affiche le contenu d'un vecteur de type thrust::host_vector<double>
 
int main (int argc, char **argv)
 

Description détaillée

MAIN : Calcul de \( \alpha \pmb{x} + \pmb{y} \) avec Thrust et cublas.

Auteur
Cuvelier.F
Version
1.0

Définition dans le fichier thrust_axpy.cu.

Documentation des macros

#define CURAND_CALL (   x)
Valeur :
do { if((x)!=CURAND_STATUS_SUCCESS) { \
printf("Error at %s:%d\n",__FILE__,__LINE__);\
return EXIT_FAILURE;}} while(0)

Définition à la ligne 154 du fichier thrust_axpy.cu.

Documentation des fonctions

int main ( int  argc,
char **  argv 
)

Code permettant d'illustrer les échanges entre mémoires CPU et GPU. Utilisation de les librairies Thrust et cuBLAS.

./thrust_axpy
Auteur
Cuvelier.F
Version
1.1
Date
04/04/2013

Code permettant d'illustrer les échanges entre mémoires CPU et GPU. Utilisation de la librairie CURAND.

./vector_axpy-n=[N] -threads=[THREADS] -blocks=[BLOCKS] -seed=[SEED]
Options facultatives :
  • [N] : nombre de V.A. (100 000)
  • [THREADS] : nombre de threads par bloc(128)
  • [BLOCKS] : nombre de blocs dans la grille (256)
  • [SEED] : nombre entier utilise pour initialiser le generateur de nombres aleatoires (777)
Auteur
Cuvelier.F
Version
1.1
Date
03/04/2013

Définition à la ligne 170 du fichier thrust_axpy.cu.

void print ( const thrust::device_vector< double > &  V,
int  n 
)

Affiche le contenu d'un vecteur de type thrust::device_vector<double>

Paramètres
[in]V: le vecteur de type thrust::device_vector<double>,
[in]n: affiche uniquement les n premières et les n dernières valeurs.

Définition à la ligne 109 du fichier thrust_axpy.cu.

void print ( const thrust::host_vector< double > &  V,
int  n 
)

Affiche le contenu d'un vecteur de type thrust::host_vector<double>

Paramètres
[in]V: le vecteur de type thrust::host_vector<double>,
[in]n: affiche uniquement les n premières et les n dernières valeurs.

Définition à la ligne 135 du fichier thrust_axpy.cu.

thrust::device_vector<double> UniformRandom ( int  N,
double  a,
double  b,
unsigned int  mainSeed 
)

Retourne un vecteur de type thrust::device_vector<double> aléatoire.

Chacune des composantes du vecteur retourné suit la loi uniforme sur l'intervalle \( [a,b]. \)

Paramètres
[in]N: dimension du vecteur,
[in]a: borne inf. de l'intervalle,
[in]b: borne sup. de l'intervalle,
[in]seed: nombre entier permettant d'initialiser le générateur de V.A.
Renvoie
un vecteur de type thrust::device_vector<double>

Définition à la ligne 87 du fichier thrust_axpy.cu.

void vector_axpy ( const double  a,
const double *  X,
const double *  Y,
double *  Z,
int  N 
)

Calcul sur le CPU de \( \alpha \pmb{x} + \pmb{y} \).

Paramètres
[in]a: correspond à \( \alpha .\)
[in]X: correspond à \( \pmb{x},\) tableau de double de taille N.
[in]Y: correspond à \( \pmb{Y},\) tableau de double de taille N.
[out]Z: contient \( \alpha \pmb{x} + \pmb{y},\) tableau de double de taille N.

Définition à la ligne 37 du fichier thrust_axpy.cu.