![]() |
TP CUDA 5.0 / Exemple axpy
axpy (CUDA 5.0)
|
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>
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) |
MAIN : Calcul de \( \alpha \pmb{x} + \pmb{y} \) avec Thrust et cublas.
Définition dans le fichier thrust_axpy.cu.
| #define CURAND_CALL | ( | x | ) |
Définition à la ligne 154 du fichier thrust_axpy.cu.
| 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.
Code permettant d'illustrer les échanges entre mémoires CPU et GPU. Utilisation de la librairie CURAND.
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>
| [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>
| [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]. \)
| [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. |
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} \).
| [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.