CUDA exp() expf() и __expf()

Как оптимизировать функцию exp в cuda? Каковы различия между приведенными ниже в CUDA?

   exp()
   expf()
   __expf()

Ответ 1

Различия объясняются в Руководстве по программированию CUDA C, добавление D.

  • exp() должен использоваться для двойной точности, хотя должен быть перегружен для одиночного
  • expf() следует использовать для одиночной точности (float)
  • __expf() - это быстрая математическая версия, производительность быстрее с некоторой потерей точности (в зависимости от входного значения, см. guide для более подробной информации).

Ответ 2

Обычно exp() для парных, expf() для поплавков, и оба они немного медленнее, чем __exp(), который доступен как аппаратная операция. Увеличение производительности обычно происходит за счет точности, но если вы действительно не уверены в точности, это не должно быть проблемой.