我编写了一个简单的内核,它对树执行递归,例如:
struct item {
int data;
item *rnext, *lnext;
} *items[NUM_ITEMS];
所以我想将这些指向自己的树项数组传递给opencl内核,而SVM似乎是最好的方法(我对opencl 2.0没有问题)。
我的问题是如何使用 boost::compute 来做到这一点,以便内核将接收整数的三倍或类似的东西。
谢谢!
我编写了一个简单的内核,它对树执行递归,例如:
struct item {
int data;
item *rnext, *lnext;
} *items[NUM_ITEMS];
所以我想将这些指向自己的树项数组传递给opencl内核,而SVM似乎是最好的方法(我对opencl 2.0没有问题)。
我的问题是如何使用 boost::compute 来做到这一点,以便内核将接收整数的三倍或类似的东西。
谢谢!
Boost.Compute确实支持使用boost::compute::svm_*函数的共享虚拟内存。
对于您的应用程序,您应该能够使用svm_alloc()分配一个 SVM 内存区域,用您的输入数据填充它,然后使用常规kernel::set_arg()函数将其传递给您的内核(它有一个重载对于 SVM 内存对象)。