cudaCreateChannelDesc(int x,int y,int z,int w,enum cudaChannelFormatKind f);
现在我有一个示例代码: cudaCreateChannelDesc(32,0,0,0,cudaChannelFormatKindFloat);
我不知道为什么x = 32,y = z = w = 0 。可以有人帮助我吗?
答案 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数据)