Estoy trabajando en un programa acelerado de GPU que requiere la lectura de un archivo completo de tamaño variable. Mi pregunta, ¿cuál es el número óptimo de bytes para leer desde un archivo y transferirlo a un coprocesador (dispositivo CUDA)?¿Transfiere eficientemente archivos grandes (hasta 2GB) a la GPU CUDA?
Estos archivos pueden ser tan grandes como 2GiB, por lo que crear un búfer de ese tamaño no parece ser la mejor idea.
Esa parte que ya estaba planeando, pero ¿qué tamaño deberían tener los fragmentos de datos de entrada? – sj755
El tamaño de la matriz más grande que puede asignar en el dispositivo. –
Podría considerar usar memcopias asincrónicas de trozos algo más pequeños de lo que cabe en la memoria (como máximo a la mitad) y procesar el trozo 'k' en paralelo con la transferencia del trozo' k-1' al host y transferir el trozo 'k + 1' de el anfitrión del dispositivo. La superposición bidireccional requiere una GPU Tesla, pero puede superponerse en una dirección incluso en GeForce. – harrism