Soy muy nuevo en la programación GPGPU, así que perdónenme si la pregunta no es particularmente apropiada. Por lo que entiendo, la programación de GPU es un trabajo de ingeniería muy complejo en comparación con la programación habitual de CPU. Hay que tener mucho cuidado con los problemas de divergencia, el mosaico, la asignación de memoria anclada y la superposición de la comunicación / dispositivo del dispositivo host.
Después de investigar un poco, encontré la biblioteca de empuje que parece intentar imitar C ++ STL. Esto es muy lindo Sin embargo, en base a mi experiencia muy limitada y al haber visto toda la microgestión necesaria para obtener un buen rendimiento, soy un poco escéptico sobre el rendimiento. ¿Puede empujar eficientemente manejar internamente toda la parte intrincada de programación? Algunas bibliotecas muy conocidas, como PETSc, parecen usar este paquete, lo que me hace creer que de alguna manera debería hacerlo.
Me preguntaba si las personas con más experiencia en CUDA y empuje podrían decir una o dos palabras sobre el rendimiento del paquete en comparación con la programación de bajo nivel de CUDA. ¿Cuándo puedo usar el empuje y cuándo debo volver a cambiar a CUDA?