Déjame concentrarme solo en CUDA y BLAS.
La aceleración sobre la implementación de BLAS de un host no es una buena métrica para evaluar el rendimiento, ya que depende de demasiados factores, aunque estoy de acuerdo en que la aceleración suele ser lo que le importa.
Si observa los puntos de referencia publicados por NVIDIA y tiene en cuenta que el Tesla M2090 tiene un rendimiento máximo de 1331 Gigaflops (precisión simple) y 665 Gigaflops (doble prec.), Verá que para SGEMM y DGEMM tenemos un rendimiento medido casi en 60% del teórico, que es bastante bueno.
2mnkm×kk×n
En lo que respecta al rendimiento sostenido de coma flotante, creo que los flops deben calcularse sin tener en cuenta los datos y los tiempos de transferencia de resultados, y esto dificulta las comparaciones de aceleración. Además, debe tener en cuenta el tamaño de la matriz, ya que el mejor rendimiento es para matrices grandes.
En pocas palabras: la aceleración de una aplicación de la vida real puede ser muy diferente del rendimiento máximo medido en las rutinas de álgebra lineal, ya que debe tener en cuenta la inicialización de la GPU, los tiempos de transferencia de datos, etc.
Por lo tanto, no responderé su pregunta sobre la biblioteca más rápida, ya que la pregunta no tiene sentido a menos que se defina una métrica y un problema precisos. Dicho todo esto, creo que cuBLAS y MAGMA son un muy buen punto de partida.