什么是OpenCL中的预留数据类型?

时间:2017-07-21 07:50:06

标签: c opencl

我想编写一个采用float3数据类型并返回bool4数据类型的内核。我查看了规范,bool n 未列在内置向量数据类型下,如float n ,而是列在保留数据类型,所以我尝试使用它:

( __global const float3 *vectors , __global bool4 *booleans)

但它返回错误Unknown type name 'bool4'。那么什么是预留数据类型以及如何使用它们?

1 个答案:

答案 0 :(得分:0)

保留数据类型cannot be used by applications as user-defined type names

  • float3是保留的,floatn也是float4,n不是2的幂。所以我建议使用bool4而不是关于最后一个组件

  • 保留了
  • booln,以及所有n的char4。您仍然可以使用union { char raw; struct st { unsigned int i : 1; // bit field to use only one bit } c[4]; } my_bool4;

如果内存中的大小非常重要,您可以使用以下内容:

my_bool4.c[i]

然后使用my_bool4.raw为[0,3]中的所有i或my_bool4和位掩码访问每个组件。

这样,对于char4Detected problems with app native libraries(please consult log for detail): libtango_client_api.so: unauthorized access to "libbinder.so" libtango_client_api.so: unauthorized access to "libcutils.so" libtango_client_api.so: unauthorized access to "libutils.so" libtango_client_api.so: unauthorized access to "libgui.so" libtango_client_api.so: unauthorized access to "libandroid_runtime.so" libtango_client_api.so: unauthorized access to "libui.so" 只有1个字节长而不是4个字节长(好吧,它取决于编译器,但你要求 1个字节)