函数cudaCreateChannelDesc中参数x,y,z,w的含义是什么

时间:2017-07-12 03:18:29

标签: cuda gpu nvidia

cudaCreateChannelDesc(int x,int y,int z,int w,enum cudaChannelFormatKind f);

现在我有一个示例代码:     cudaCreateChannelDesc(32,0,0,0,cudaChannelFormatKindFloat);

我不知道为什么x = 32,y = z = w = 0 。可以有人帮助我吗?

2 个答案:

答案 0 :(得分:3)

该函数有一个单独的C和C ++ API(C ++ API被重载)。

对于C API函数,这些是每个通道的位数。这些可以是颜色通道或空间尺寸,也可以是您想要使用它们的任何颜色。您复制的示例仅使用标量值。 32位适用于浮点数据类型。

__host__ ​cudaChannelFormatDesc cudaCreateChannelDesc ( int  x, int  y, int  z, int  w, cudaChannelFormatKind f )

来自cuda docs,"返回一个格式为f的通道描述符,以及每个组件x,y,z和w的位数。"

C ++ API重载,看起来像这样...... 如果您使用visual studio或g ++编译.cu文件,则应使用此表单。对于c文件,请使用上面的内容。

__inline__ __host__ cudaChannelFormatDesc cudaCreateChannelDesc<float>(void)
__inline__ __host__ cudaChannelFormatDesc cudaCreateChannelDesc<float2>(void)
__inline__ __host__ cudaChannelFormatDesc cudaCreateChannelDesc<float4>(void)
etc.

答案 1 :(得分:1)

  

返回格式为f且每个位数的通道描述符   分量x,y,z和w。

x,y,z,w是x,y,z维度中的位数和&#39; w&#39;。在你的例子中,&#39; x&#39;数据为32位,其他维度未使用。

(&#39; w&#39;用于使数学更容易将变换应用于3d数据)