tl; dr:如何确定native_
函数的实现定义的输入范围和结果精度?
根据OpenCL spec,受支持的输入范围和类似native_sin
之类的函数的结果精度是实现定义的。
因此,只要将输入范围定义为float native_sin(float x) { return x; }
,基本上native_sin
将是[0; 0]
的完全符合规范的实现。希望没有人这样做,但是像half_sin
这样只能保证在输入范围[-2 ^ 16; + 2 ^ 16],对native_sin
可能会有实际的限制,这可能使它对我不可用。
因此,为了知道是否可以将native_sin
用于我的目的,我需要知道有效的输入范围和输出错误。如何确定这些信息?