【发布时间】:2013-05-13 20:57:19
【问题描述】:
我正在读取和写入大量 FITS 和 DNG 图像,其中可能包含与我的平台和/或 opencl 设备不同的字节序数据。
目前我会根据需要交换主机内存中的字节顺序,这非常慢并且需要额外的步骤。
有没有一种快速的方法可以将字节顺序错误的 int/float/short 缓冲区传递给 opencl 内核?
使用额外的内核运行来修复字节序是可以的;使用一些无开销的自动修复读/写操作将是完美的。
我知道变量属性 ((endian(host/device))),但这对使用 little endian 设备的 little endian 平台上的 big endian FITS 文件没有帮助。
我想过这样的解决方案(尚未实施或测试):
uint4 mask = (uint4) (3, 2, 1, 0);
uchar4 swappedEndianness = shuffle(originalEndianness, mask);
// to be applied on a float/int-buffer somehow
希望有更好的解决方案。
提前致谢, 运行时错误
【问题讨论】:
标签: buffer byte opencl endianness