需要澄清 OpenCL 中 vloadn 的偏移量

Clarification needed for offset in vloadn in OpenCL

This page 表示 vloadn(size_t offset, const gentype *p) "returns sizeof (gentypen) bytes of data read from address (p + (offset * n))"。这是否意味着 short4 m = vload4(1920, p) 将从地址 p+1920*4 开始读取四个 16 位值,或者它会从位置 p+1920*0p+1920*1、[= 各读取一个 16 位值15=] 和 p+1920*3?

p+1920*0, p+1920*1, p+1920*2 and p+1920*3

有一个跨步模式,但定义说它是一个矢量负载,它没有说稀疏矢量所以它必须是一个

four 16-bit values starting from address p+1920*4

所以它应该与加载一个除了对齐处理(可能)例外的结构没有什么不同。

对于跨步复制,您可以使用

event_t async_work_group_strided_copy ( __local gentype *dst,
       const __global gentype *src,
       size_t num_gentypes,
       size_t src_stride,
       event_t event)