2011-08-31 27 views
10

Exp işlevini cuda'da nasıl optimize edebilirim? CUDA'da aşağıdakiler arasındaki farklar nelerdir?CUDA exp() expf() ve __expf()

exp() 
    expf() 
    __expf() 
+3

Bu, CUDA programlama kılavuzunun Ek C'sinde, önceki CUDA ile ilgili sorularınızın birçoğunda olduğu gibi ele alınmıştır. Belki şimdi belgeleri okumak için zamanı geldi mi? – talonmies

+1

Şimdi [Ek D] 'de (http://docs.nvidia.com/cuda/cuda-c-programming-guide/#mathematical-functions-appendix) ele alınmıştır. Bunun bir ara tekrar değişeceğini biliyorum. –

+2

Ben onun sorusunu sevdim, googling ve cuda belgelerinde imho – ikku100

cevap

14

farklılıklar CUDA C Programming Guide, Ek D açıklanmıştır

    tek
  • expf()
  • tek hassasiyet için kullanılmalıdır ( float) için aşırı olması gerektiği halde
  • exp(), çift hassasiyet için kullanılmalıdır
  • __expf() hızlı matematik versiyonudur, performans bazı hassasiyet kaybıyla daha hızlıdır (giriş değerine bağlı olarak, daha fazla ayrıntı için bkz. guide).
+1

bir şey bulmak umuduyla stackoverflow beats bulma olduğunu Maksimum ulp hatası '2 + kat (abs (1.16 * x)) 'dir. Bunu cevabınıza eklemek isteyebilirsiniz;) –

4

Genel exp(), çiftler için yüzen için expf() ve her ikisi de bir donanım işlemi olarak kullanılabilir __exp() biraz daha yavaştır. Performans artışı genellikle doğruluk maliyetine dayanır, ancak gerçekten doğruluktan endişelenmedikçe sorun olmaz.