Cuda _u_ddiv_ru的语义
根据uu ddiv_ru的公式,我期望下面的代码结果是ceil(8/32)=1.0,而不是0.25Cuda _u_ddiv_ru的语义,cuda,intrinsics,Cuda,Intrinsics,根据uu 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;
#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;
}
#包括
使用名称空间std;
__管理双x;
__管理双y;
__管理的双r;
__全局无效ceilDiv()
{
r=(x,y);
}
int main()
{
x=8;
y=32;
r=-1;
ceilDiv();
cudaDeviceSynchronize();
cout你得到的结果是正确的
您正在使用的内部设备使用特定的IEEE 754-2008舍入模式为最后一位的单元(ULP)实现双精度除法有效位的。这控制当结果不能以所选格式准确表示时会发生什么。在这种情况下,您选择了向上舍入,这意味着在除法结果中生成的有效位的最后一位向上舍入(向上舍入)+∞). 在您的情况下,所有舍入模式都应该产生相同的结果,因为结果可以用IEEE 754 binary64格式精确表示(它是2的舍入幂)
在编写更多浮点代码之前,请阅读所有内容。您获得的结果是正确的
您正在使用的内部设备使用特定的IEEE 754-2008舍入模式为最后一位的单元(ULP)实现双精度除法有效位的。这控制当结果不能以所选格式准确表示时会发生什么。在这种情况下,您选择了向上舍入,这意味着在除法结果中生成的有效位的最后一位向上舍入(向上舍入)+∞). 在您的情况下,所有舍入模式都应该产生相同的结果,因为结果可以用IEEE 754 binary64格式精确表示(它是2的舍入幂)
在编写更多的浮点代码之前,请阅读所有内容