如何在 Boost::Compute 和自定义内核中使用共享虚拟内存?

How to use Shared Virtual Memory in Boost::Compute and custom kernel?

我编写了一个简单的内核,它对树执行递归,例如:

struct item {
    int data;
    item *rnext, *lnext;
} *items[NUM_ITEMS];

所以我想将这种指向自身的树项数组传递给 opencl 内核,而 SVM 似乎是这样做的最佳方式(我相信 opencl 2.0 没有问题)。

我的问题是如何使用 boost::compute 使内核接收整数的三元组或类似的东西。

谢谢!

Boost.Compute does support shared virtual memory using the boost::compute::svm_* 个函数。

对于您的应用程序,您应该能够使用 svm_alloc(), fill it with your input data, and then pass it to your kernel using the regular kernel::set_arg() 函数(它具有 SVM 内存对象的重载)分配一个 SVM 内存区域。