3 Stimmen

CUDA-Kernel-Aufruf in einem einfachen Beispiel

Es ist der erste parallele Code von cuda als Beispiel .

Kann mir jemand den Kernel-Aufruf beschreiben: <<< N , 1 >>>

Dies ist der Code mit den wichtigsten Punkten:

#define N   10

__global__ void add( int *a, int *b, int *c ) {
    int tid = blockIdx.x;    // this thread handles the data at its thread id
    if (tid < N)
        c[tid] = a[tid] + b[tid];
}

int main( void ) {
    int a[N], b[N], c[N];
    int *dev_a, *dev_b, *dev_c;

    // allocate the memory on the GPU
    // fill the arrays 'a' and 'b' on the CPU
    // copy the arrays 'a' and 'b' to the GPU

    add<<<N,1>>>( dev_a, dev_b, dev_c );

    // copy the array 'c' back from the GPU to the CPU
    // display the results
    // free the memory allocated on the GPU

    return 0;
}

Warum es von <<< N , 1 >>> dass es bedeutet, dass wir von N Blöcken und 1 Thread in jedem Block verwendet ?? da wir dies schreiben können <<< 1 , N >>> und verwendet 1 Block und N Threads in diesem Block zur weiteren Optimierung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X