Семантика __ddiv_ru - PullRequest
       44

Семантика __ddiv_ru

0 голосов
/ 28 декабря 2018

Из документации из __ddiv_ru Я ожидаю, что следующий результат кода будет ceil (8/32) = 1.0, вместо этого я получу 0,25.

#include <iostream>

using namespace std;

__managed__ double x;
__managed__ double y;
__managed__ double r;

__global__ void ceilDiv()
{
    r = __ddiv_ru(x,y);
}

int  main()
{
    x = 8;
    y = 32;
    r = -1;

    ceilDiv<<<1,1>>>();
    cudaDeviceSynchronize();

    cout << "The ceil of " << x << "/" << y << " is " << r << endl;

    return 1;
}

Чего мне не хватает?

1 Ответ

0 голосов
/ 28 декабря 2018

Полученный вами результат верен.

Используемое вами свойство реализует деление с двойной точностью с определенным режимом округления IEEE 754-2008 для единицы на последнем месте (ULP) значения и .Это контролирует, что происходит, когда результат не может быть точно представлен в выбранном формате.В этом случае вы выбрали округление вверх, что означает, что последняя цифра значения и полученная в результате деления округляется в большую сторону (в направлении + ∞).В вашем случае все режимы округления должны давать один и тот же результат, поскольку результат может быть точно представлен в формате бинарного кода IEEE 754 (это степень округления 2).

Пожалуйста, прочитайте все здесь перед темписать больше кода с плавающей запятой.

...