Стандарт IEEE-754 на графическом процессоре NVIDIA (sm_13)

Если я выполню операцию с плавающей запятой (одинарной точности) на хосте и устройстве (GPU arch sm_13), будут ли значения другими?

1 ответ

Решение

Хорошее обсуждение этого доступно в официальном документе NVIDIA. В принципе:

  • IEEE-754 в настоящее время реализован практически всем;
  • Даже между верной реализацией этого стандарта вы все еще можете увидеть различия в результатах (как известно, Intel выполняет 80-битную внутреннюю обработку для обеспечения двойной точности), или высокие настройки оптимизации с вашим компилятором могут изменить результаты
  • Возможность вычислений 2.0 и более поздние Карты NVIDIA поддерживают IEEE-754 как с одинарной, так и с двойной точностью, с очень небольшими оговорками
    • Некоторые режимы округления не поддерживаются для некоторых операций - это актуально, только если вы явно изменили режимы округления в своем коде
    • Есть некоторые тонкости, связанные с умножением и добавлением
    • CUDA также обеспечивает (немного) более низкую точность, но более быструю реализацию нескольких операций, и, конечно, если вы используете их явно или неявно (с опциями компилятора), вы, естественно, не получите полные результаты ieee-754
  • Возможность вычислений 1.3 Карты поддерживают ieee-754, как указано выше, с двойной точностью, но не с одинарной точностью; (одинарная точность не поддерживает ненормальные - например, очень маленькие - числа, без FMA, квадратный корень и деление не полностью точны)
  • Возможность вычислений 1.2 Карты имеют только одинарную точность, и они не являются полными ieee-754, как указано выше.
Другие вопросы по тегам