Introduzione alla programmazione in CUDA |
||||
Comandi utili |
Comando |
Sintassi |
Utilizzo |
cudaMalloc |
cudaMalloc( (void **)&dev_a, N*sizeof(int) ) |
Utilizzo |
cudaFree |
cudaFree( dev_a ) |
Utilizzo |
|
|
|
cudaMemcpy |
cudaMemcpy( dev_a, a, N*sizeof(int), cudaMemcpyHostToDevice) |
Utilizzo |
cudaMemcpy( b, dev_b, N*sizeof(int), cudaMemcpyDeviceToHost) |
Utilizzo |
|
cudaMemcpy2D |
cudaMemcpy2D( dev_a, N*sizeof(int), a, N*sizeof(int), N*sizeof(int), cudaMemcpyHostToDevice) |
Utilizzo |
|
|
|
syncthreads |
__syncthreads() |
doppio underscore iniziale |
|
|
|
cudaEventRecord |
cudaEventRecord(start1,0); |
Utilizzo |
|
cudaEventRecord(stop1,0); |
Utilizzo |
|
cudaEventSynchronize(stop1); |
Utilizzo |
cudaEventElapsedTime |
cudaEventElapsedTime(&time1, start1, stop1); |
Utilizzo |
|
|
|
cudaSetDevice |
cudaSetDevice(dev); |
Utilizzo |
|
|
|
Variabile |
Significato |
|
threadIdx.x |
indice, coordinata del thread, rispetto alle coordinate x, y, z |
|
blockIdx.x |
indice, coordinata del blocco di threads, rispetto alle coordinate x, y, z |
|
blockDim.x |
dimensione del blocco di threads (i.e. quanti threads nel blocco), rispetto alle coordinate x, y, z |
|
gridDim.x |
dimensione della griglia (i.e. quanti blocchi lungo una direzione), rispetto alle coordinate x, y, z |
|
|
|
|
Attributo |
Esempio |
Significato |
__global__ |
__global__ void scalar_prod(dev_a, dev_b, dev_c) |
(doppio underscore prima e dopo) |
__device__ |
__device__ void scalar_prod(dev_a, dev_b, dev_c) |
(doppio underscore prima e dopo) |
__shared__ |
__shared__ cache[blocksPerGrid]; |
(doppio underscore prima e dopo) |
dim3 |
dim3 v(128,128,1) |
tipo di dato: vettori interi; utilizzato per comunicare le dimensioni della griglia |