Come ottimizzare la funzione exp in cuda? Quali sono le differenze tra quanto segue in CUDA ??CUDA exp() expf() e __expf()
exp()
expf()
__expf()
Come ottimizzare la funzione exp in cuda? Quali sono le differenze tra quanto segue in CUDA ??CUDA exp() expf() e __expf()
exp()
expf()
__expf()
Le differenze sono spiegate nel CUDA C Programming Guide, appendice D.
exp()
dovrebbero essere utilizzati per doppia precisione, anche se deve essere sovraccaricato per singolaexpf()
deve essere utilizzato per singola precisione (float
)__expf()
è la versione per la matematica veloce, le prestazioni sono più veloci con una certa perdita di precisione (in base al valore di input, vedere guide per ulteriori dettagli).is L'errore massimo di ulp è '2 + floor (abs (1.16 * x))' secondo il link. Puoi aggiungerlo alla tua risposta;) –
Generalmente exp()
è per i doppi, expf()
per carri ed entrambi sono un po 'più lento rispetto __exp()
che è disponibile come un'operazione di hardware. Il guadagno in termini di prestazioni di solito ha un costo esatto ma a meno che tu non sia davvero preoccupato dell'accuratezza, non dovrebbe essere un problema.
Questo è tutto coperto nell'appendice C della guida di programmazione CUDA, proprio come molte delle vostre precedenti domande relative CUDA. Forse ora è il momento di leggere la documentazione? – talonmies
Ora è trattato in [Appendice D] (http://docs.nvidia.com/cuda/cuda-c-programming-guide/#mathematical-functions-appendix). So che questo cambierà di nuovo prima o poi. –
Mi è piaciuta comunque la sua domanda, googling e trovare su stackoverflow beat nella speranza di trovare qualcosa nella documentazione di cuda imho – ikku100