OpenCL中有许多数据类型,例如int
,cl_int
,char
,cl_char
,'短',' cl_short&#39 ;.但是int
和cl_int
之间有什么区别,我应该何时使用cl_int
代替int
?
答案 0 :(得分:7)
C / C ++中int
的大小取决于机器。保证至少 16位,但这些天通常是32位,也可能是64位。这在OpenCL中的主机和设备之间传递数据时会出现问题 - 如果设备对int
的大小有不同的看法,然后将int
值传递给设备可能不会产生预期的结果。
OpenCL标头提供cl_int
定义,以提供始终 32位的数据类型,该数据类型与OpenCL设备所期望的大小相匹配。这意味着您可以将cl_int
值或一组cl_int
值从主机传递到设备(并返回),而不会遇到大小不匹配的问题。
因此,无论何时编写处理将传递给设备的值或缓冲区的主机代码,都应始终使用cl_
数据类型。