如何在 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 内存区域。
我编写了一个简单的内核,它对树执行递归,例如:
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 内存区域。