5. “oinarrizko plakako zirrikituetako batean
konektatzen den barruko osagaia da. Bere
helburu nagusia monitoreari azaldu behar
diren datuak zuzen bidaltzea da.”
Iturria: CC-BY-SA 3.0 Euskarazko Wikipedia. http://eu.wikipedia.org/wiki/Txartel grafiko
5
7. “a specialized electronic circuit designed to
rapidly manipulate and alter memory to
accelerate the building of images in a frame
buffer intended for output to a display”
Iturria: CC-BY-SA 3.0 Ingelesezko Wikipedia. http://en.wikipedia.org/wiki/Graphics processing unit
7
56. 1 int main ( int argc , char * argv []) {
const int N = 500;
3 int i , a [ N ];
// a [ N ] bete
5
for ( i = 0; i < N ; i ++)
7 a[i] = 2 * i;
9 return 0;
}
57
58. int main ( int argc , char * argv []) {
2 const int N = 500;
int i , a [ N ];
4 // a [ N ] bete
6 # pragma omp parallel for
for ( i = 0; i < N ; i ++)
8 a[i] = 2 * i;
10 return 0;
}
60
60. 1 int main ( int argc , char * argv []) {
const int N = 500;
3 int i , a [ N ];
// a [ N ] bete
5
# pragma acc parallel kernels
7 for ( i = 0; i < N ; i ++)
a[i] = 2 * i;
9
return 0;
11 }
63
107. 1 int main ( int argc , char * argv []) {
const int N = 500;
3 int i , a [ N ] , b [ N ] , c [ N ];
// a eta b edukiz bete
5
for ( i = 0; i < N ; i ++)
7 c [ i ] = a [ i ]+ b [ i ];
9 return 0;
}
111
108. int main ( int argc , char * argv []) {
2 const int N = 500;
int a [ N ] , b [ N ] , C [ N ];
4 // a eta b edukiz bete
6 cudaMalloc (( void **) & d_a , N * sizeof ( int ) ) ;
cudaMalloc (( void **) & d_b , N * sizeof ( int ) ) ;
8 cudaMalloc (( void **) & d_c , N * sizeof ( int ) ) ;
10 cudaMemcpy ( d_a , a , N * sizeof ( int ) , c u d a M e m c p y H o s t T o D e v i c e ) ;
cudaMemcpy ( d_b , b , N * sizeof ( int ) , c u d a M e m c p y H o s t T o D e v i c e ) ;
12
dim3 hariak (25 , 10 , 1) ;
14 dim3 blokeak (2 , 1 , 1) ;
kernel < < < blokeak , hariak > > >(* d_a ,* d_b ,* d_c ) ;
16
cudaMemcpy (c , d_c , N * sizeof ( int ) , c u d a M e m c p y D e v i c e T o H o s t ) ;
18
cudaFree ( d_a ) ;
20 cudaFree ( d_b ) ;
cudaFree ( d_c ) ;
22
return 0;
24 }
113
109. __global__ kernel ( int * d_a , int * d_b , int * d_c ) {
2 int indizea = ( threadIdx . x + 25 * threadIdx . y ) * (
blockIdx . x + 1) ;
d_c [ indizea ] = d_a [ indizea ] + d_b [ indizea ];
4 }
115