OpenCL的示例是什么?

时间:2013-11-30 11:40:32

标签: opencl

在阅读OpenCL函数upsample的文档后,我仍然不知道它的作用。

文档对该功能的描述是:

result[i] = ((gentype)hi[i] << 8|16|32) | lo[i]

这是什么意思? upsample做了什么?

1 个答案:

答案 0 :(得分:4)

也许最好通过代码而不是单词来解释(毕竟片段值2 ^ 10个单词):

uchar hi = 0xAA;
uchar lo = 0xBB;

ushort x = upsample(hi, lo); // x = 0xAABB

签名版本存在重载,这些版本遵循签名规则,也会导致向量重载:

uchar2 hi = (uchar2)(0xAA, 0xBB);
uchar2 lo = (uchar2)(0x11, 0x22);

ushort2 x = upsample(hi, lo); // x = {0xAA11, 0xBB22}

那些不做任何特别的事情,你可以想象,它们只是按组件运作。


在数学上,函数的描述是有意义的,通过&#34;推动&#34;输出最高有效位的hi参数,使其出现在前8位(short),16位(int),32位(long)中。以下是使用ushort upsample(uchar hi, uchar lo)重载进行说明的示例:

upsample(hi, lo) = (hi << 8) | lo

hi = 01010101
lo = 01101110

lo      = 0000000001101110 (extended to result type ushort)
hi << 8 = 0101010100000000 (extended to result type ushort)

(hi << 8) | lo = 0101010100000000
               | 0000000001101110
               = 0101010101101110
                 ^       ^
                 hi      lo

实际上,谢谢,我对这个功能一无所知,我当然可以自己使用它。干杯!