Cómo optimizar la función exp en cuda? ¿Cuáles son las diferencias entre los siguientes en CUDA?CUDA exp() expf() y __expf()
exp()
expf()
__expf()
Cómo optimizar la función exp en cuda? ¿Cuáles son las diferencias entre los siguientes en CUDA?CUDA exp() expf() y __expf()
exp()
expf()
__expf()
Las diferencias se explican en la CUDA C Programming Guide, apéndice D.
exp()
se debe utilizar para doble precisión, aunque debe ser sobrecargado para la solaexpf()
se debe utilizar para precisión simple (float
)__expf()
es la versión matemática rápida, el rendimiento es más rápido con cierta pérdida de precisión (dependiendo del valor de entrada, consulte guide para obtener más información).es El máximo error de ulp es '2 + floor (abs (1.16 * x))' según el enlace. Es posible que desee agregar eso a su respuesta;) –
Generalmente es exp()
en dobles, expf()
de flotadores y ambos son ligeramente más lento que __exp()
que está disponible como una operación de hardware. La ganancia de rendimiento generalmente se consigue a costa de la precisión, pero a menos que realmente esté preocupado por la precisión, no debería ser un problema.
Todo esto se cubre en el Apéndice C de la guía de programación de CUDA, al igual que varias de sus preguntas anteriores relacionadas con CUDA. Tal vez ahora es el momento de leer la documentación? – talonmies
Ahora está cubierto en [Apéndice D] (http://docs.nvidia.com/cuda/cuda-c-programming-guide/#mathematical-functions-appendix). Sé que esto va a cambiar de nuevo alguna vez. –
Me gustó su pregunta, buscando en Google y en Stackoverflow beats esperando encontrar algo en la documentación de cuda – ikku100