2

是否可以设置哪些函数参数具有“全局”或“常量”修饰符?或者如何至少在每个函数的基础上检查生成函数的代码(手动插入)?

我看到的最接近的事情是BOOST_COMPUTE_STRINGIZE_SOURCE您手动编写所有内核代码,将其保存为字符串,手动编译,调用 using set_arg(argId, wrapedItems)queue.enqueue_nd_range_kernel这看起来比:

    BOOST_COMPUTE_CLOSURE(ftype, kick, (ftype beam), (__const voltage), {
        return beam * sin(beam + voltage);
    });

人们希望。

4

1 回答 1

1

BOOST_COMPUTE_CLOSURE()构造一个可以传递给 Boost.Compute 函数的函数,例如transform()sort()。与 相比BOOST_COMPUTE_FUNCTION(),它允许捕获范围内的 C++ 变量。它不构造 OpenCL 内核对象,因此实际上不需要指定地址空间限定符,因为它从不操作指针,只操作值。

但是,如果您有自己的内核并希望将__constant缓冲区作为参数传递给它,那么请使用constant_buffer_iterator.

于 2016-09-17T13:01:36.157 回答