No me las puedo imaginar, ¿cuál es la mejor manera de garantizar que la memoria utilizada en mi núcleo sea constante? Hay una pregunta similar en http://stackoverflow...r-pleasant-way. Estoy trabajando con GTX580 y compilando solo para capacidad 2.0. Mi kernel pareceUso constante de la memoria en el código CUDA
__global__ Foo(const int *src, float *result) {...}
ejecuto el siguiente código en el host:
cudaMalloc(src, size);
cudaMemcpy(src, hostSrc, size, cudaMemcpyHostToDevice);
Foo<<<...>>>(src, result);
el camino alternativo es añadir
__constant__ src[size];
a .CU de archivos, eliminar src puntero desde el kernel y ejecuta
cudaMemcpyToSymbol("src", hostSrc, size, 0, cudaMemcpyHostToDevice);
Foo<<<...>>>(result);
¿Son estas dos formas equivalentes o la primera no garantiza el uso de la memoria constante en lugar de la memoria global? tamaño cambia dinámicamente por lo que la segunda forma no es útil en mi caso.