gpt4 book ai didi

c++ - boost 排序和 OpenCL 缓冲区

转载 作者:行者123 更新时间:2023-11-30 03:50:04 25 4
gpt4 key购买 nike

Boost 函数(排序等)是否可以对设备缓冲区中已有的数组进行操作?

例如;我在设备上的 vbo 中有一个点数组,我一直在其上运行内核函数;我想对它们进行排序,但要避免多次来回拉取所有数据。

或者是编写完整排序内核的唯一选择吗?

最佳答案

您可以创建一个boost::compute::buffer(cl_mem m);

默认情况下它将获取缓冲区所有权(增加 ref)。所以你可以在传递它之后调用 clReleaseMemObject()。 (或者,如果您使用的是 C++,只需让 cl::Buffer 的析构函数摆脱引用即可)。

但真正的问题是两个上下文应该相同。因此,您需要将 boost 的上下文设置为您在 boost 之外使用的相同上下文。通过使用 boost::compute::context(cl_context c);

同样,引用计数器会自动递增,因此您可以继续以相同的方式使用 conetext,并调用相同的 clReleaseContext()

完成后,您可以调用普通的 boost 函数来执行排序等操作。

关于c++ - boost 排序和 OpenCL 缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32034484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com