La asignación dinámica de CUDA - contención inferior a solución realizada a mano?
-
08-10-2019 - |
Pregunta
Ahora CUDA permite la asignación dinámica de la memoria global. Sin embargo, no pude encontrar ninguna referencia a la escalabilidad de esa función malloc
: ¿es mejor que, por ejemplo, asignar previamente un trozo de memoria y luego simplemente asignar la siguiente tirada de memoria a un hilo incrementando atómicamente un número entero global? Este último funciona la solución "hechos en casa", pero hay un problema obvio con la escalabilidad, así que me pregunto si malloc
se encarga de que de alguna manera.
Solución
Creo que mientras el "hecho en casa" solución podría ser tan bueno en la actualidad, a pesar de llamadas simultáneas a un número entero mundial podrían reducir la velocidad, Malloc sería mi elección.
Esto es debido a que permite Nvidia lidiar con el dolor de cabeza de la escalabilidad y para hacer mejoras, ya sea en la implementación de hardware o software, que puede aprovechado con sólo volver a compilar el código en una fecha posterior.