Über Pointers kann von einem Speicher (CPU), auf den anderen (GPU) zugewiesen werden.
- Device-Pointer zeigen auf Speicher im GPU
– Kann im host-code gebraucht, aber nicht dereferenziert werden - Host-Pointer zeigen auf den Speicher der CPU. Kann vom GPU Code gebraucht, aber nicht dereferenziert werden.
Funktionen
cudaMalloc( Wert, Grösse);
cudaFree();
cudaMemcpy();
Bsp. aus der Einführung
int main( void ) { int a, b, c; // host: a, b, c int*dev_a, *dev_b, *dev_c; // device copies of a, b, c intsize =sizeof(int); // allocate device copies of a, b, c cudaMalloc( (void**)&dev_a, size ); cudaMalloc( (void**)&dev_b, size ); cudaMalloc( (void**)&dev_c, size ); a = 2; b = 7; // copy inputs to device cudaMemcpy(dev_a, &a, size,cudaMemcpyHostToDevice); cudaMemcpy(dev_b, &b, size,cudaMemcpyHostToDevice); // launch add() kernel on GPU, passing parameters add<<< 1, 1 >>>(dev_a,dev_b,dev_c); // copy device result back to host copy of c cudaMemcpy( &c,dev_c, size,cudaMemcpyDeviceToHost); cudaFree(dev_a); cudaFree(dev_b); cudaFree(dev_c); return 0; }