2011-08-31 9 views
10

cuda에서 exp 기능을 최적화하는 방법은 무엇입니까? CUDA에서 다음의 차이점은 무엇입니까 ??CUDA exp() expf() 및 __expf()

exp() 
    expf() 
    __expf() 
+3

이전의 CUDA 관련 질문과 마찬가지로 CUDA 프로그래밍 가이드의 부록 C에서 다룹니다. 아마도 지금은 문서를 읽을 시간입니까? – talonmies

+1

이제는 [부록 D] (http://docs.nvidia.com/cuda/cuda-c-programming-guide/#mathematical-functions-appendix)에서 다룹니다. 나는 이것이 언젠가 다시 변할 것이라는 것을 안다. –

+2

나는 그의 질문을 좋아해, 검색 및 stackoverflow에 찾는 것은 쿠다 문서에서 아무것도 찾을 바라고있다. – ikku100

답변

14

차이는 CUDA C Programming Guide 부록 D.를 설명

    단일
  • expf()
  • 단일 정밀도 표기 ( float) 과부하되어야하지만
  • exp()는 배정도 사용해야
  • __expf()은 빠른 수학 버전이므로 성능이 빠르며 정밀도가 약간 떨어집니다 (입력 값에 따라 달라짐, 자세한 내용은 guide 참조).
+1

입니다. 최대 ulp 오류는 링크에 따라'2 + floor (abs (1.16 * x))'입니다. 응답에 추가 할 수도 있습니다.) –

4

일반적 exp()은 복식위한 수레 expf() 둘 하드웨어 동작으로서 사용할 __exp()보다 약간 느리다. 성능 향상은 일반적으로 정확성의 대가로 발생하지만 정확성에 대해 정말로 우려하지 않는 한 문제가되어서는 안됩니다.