是否可以设置哪些函数参数具有'global'或'const'修饰符?或者至少如何在每个函数的基础上检查生成函数的代码(手动插入)?
我看到的最近的事情是BOOST_COMPUTE_STRINGIZE_SOURCE
,你手工编写所有内核代码,将其保存到字符串中,手动编译,使用set_arg(argId, wrapedItems)
和queue.enqueue_nd_range_kernel
调用看起来比复杂得多:
BOOST_COMPUTE_CLOSURE(ftype, kick, (ftype beam), (__const voltage), {
return beam * sin(beam + voltage);
});
人们希望。
答案 0 :(得分:1)
BOOST_COMPUTE_CLOSURE()
构造了一个可以传递给Boost.Compute函数的函数,如transform()
或sort()
。与BOOST_COMPUTE_FUNCTION()
相比,它允许捕获范围内的C ++变量。它不构造OpenCL内核对象,因此实际上不需要指定地址空间限定符,因为它从不对指针进行操作,只对值进行操作。
但是,如果拥有自己的内核并希望将__constant
缓冲区作为参数传递给它,那么请使用constant_buffer_iterator
。