Как использовать 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).