考虑以下。在上下文中,在设备内存中分配了两个缓冲区,缓冲区A
和缓冲区B
。一个缓冲区包含指向另一个缓冲区中某物的指针。假设主机将在内核调用之间适当地保持缓冲区活动,那么进行此设置是否安全?特别是它是否保证实现不会移动缓冲区从而使指针无效?
问问题
868 次
2 回答
1
至少如果上下文有多个设备,它似乎没有。
除5.4.4 Migrating Memory Objects
其他事项外,规范的条款声明:
通常,内存对象被隐式迁移到使用内存对象的排队命令的目标设备。
而且似乎没有办法禁止这种迁移,也没有关于如果上下文中只有一个设备会发生什么的信息。
唉,似乎保持寻址一致的唯一方法是分配一个巨大的缓冲区并对其内容进行手动内存管理,将所有地址存储为从缓冲区开始的偏移量。
于 2013-06-07T11:47:24.423 回答
0
OpenCL 1.2 不支持指向缓冲区中指针的指针,但似乎 OpenCL 2.0 将允许这样做。请参阅本演示文稿中标题为“SVM:共享虚拟内存”的幻灯片。
于 2013-06-10T07:31:44.670 回答