【发布时间】:2020-09-08 07:43:28
【问题描述】:
在 OpenCL 中,是:
convert_int(floor(my_float))
完全等价于
convert_int_rtn(my_float)
语义上?我会更喜欢前一个命令而不是后者吗?
如果您的回答取决于我选择了int,请尝试将其推广到任意整数类型T。
注意事项:
- OpenCL 1.2 documentation for
convert_T。 -
_rtn表示“舍入到负无穷大”。
【问题讨论】:
-
谈到浮点,而不是 OpenCL 规范,
floor(−¼)是 -1,因此将其转换为带有截断或舍入到最近的整数将产生与转换不同的结果 (-1) −¼ (0)。您可能需要trunc而不是floor。然后,正确的trunc实现没有错误,因为它只是删除(更改为零)浮点表示中的数字。如果OpenCL到整数的转换被截断,那么该转换具有与浮点截断然后转换相同的效果。对于四舍五入到最近的转换,先截断是行不通的。 -
@EricPostpischil:
_rtn舍入到负无穷大。 -
好的,那么建议的操作都是一样的,就浮点语义而言,
标签: floating-point type-conversion opencl