Как использовать Shared Virtual Memory в Boost::Compute и собственном ядре?

Я написал простое ядро, которое выполняет рекурсию по деревьям, например:

struct item {
    int data;
    item *rnext, *lnext;
} *items[NUM_ITEMS];

Поэтому я хотел бы передать такой массив элементов дерева, которые указывают на себя ядру opencl, и SVM кажется лучшим способом сделать это (у меня нет проблем в расчете на opencl 2.0).

Мой вопрос заключается в том, как сделать это с boost::compute, чтобы ядро ​​получало тройки целых чисел или что-то в этом роде.

Спасибо!

1 ответ

Решение

Boost.Compute поддерживает разделяемую виртуальную память, используя функции boost::compute::svm_*.

Для вашего приложения вы должны иметь возможность просто выделить область памяти SVM с помощью svm_alloc (), заполнить ее входными данными, а затем передать ее ядру, используя обычную функцию kernel::set_arg() (которая имеет перегрузку). для объектов памяти SVM).

Другие вопросы по тегам