Поддерживает ли boost :: compute модификаторы const?

Можно ли установить, какие аргументы функции имеют модификаторы ‘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);
});

можно было бы надеяться.

2

Решение

BOOST_COMPUTE_CLOSURE() создает функцию, которая может быть передана в функции Boost.Compute, такие как transform() или же sort(), По сравнению с BOOST_COMPUTE_FUNCTION(), это позволяет захватывать переменные C ++ в области видимости. Он не создает объект ядра OpenCL, поэтому на самом деле нет необходимости указывать спецификатор адресного пространства, потому что он никогда не работает с указателями, только со значениями.

Однако, если у вас есть собственное ядро ​​и вы хотите передать __constant буфер в качестве аргумента, затем используйте constant_buffer_iterator,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]