Non riesco a capirlo da solo, qual è il modo migliore per garantire che la memoria utilizzata nel mio kernel sia costante. C'è una domanda simile a http://stackoverflow...r-pleasant-way. Sto lavorando con GTX580 e sto compilando solo per funzionalità 2.0. Il mio kernel assomigliaUtilizzo memoria costante nel codice CUDA
__global__ Foo(const int *src, float *result) {...}
eseguo il seguente codice sull'host:
cudaMalloc(src, size);
cudaMemcpy(src, hostSrc, size, cudaMemcpyHostToDevice);
Foo<<<...>>>(src, result);
il modo alternativo è quello di aggiungere
__constant__ src[size];
a .CU di file, rimuovere src puntatore da il kernel ed esegui
cudaMemcpyToSymbol("src", hostSrc, size, 0, cudaMemcpyHostToDevice);
Foo<<<...>>>(result);
Sono questi due modi equivalenti o il primo non garantisce l'utilizzo della memoria costante anziché della memoria globale? dimensioni cambia dinamicamente, quindi il secondo modo non è utile nel mio caso.