Как передать массив структур в ядро ​​с помощью JOCL - PullRequest
2 голосов
/ 29 мая 2020

Я пишу трассировщик лучей OpenCL, используя JOCL (привязки OpenCL для Java). Я хочу передать ядру массив структур. Структура выглядит так:

struct Sphere {
    float3 center;
    float radius;
    int materialIndex;
};

, а ядро ​​принимает ее так:

__kernel void raytraceKernel(
    __constant struct Sphere *spheres,
    etc...

Как лучше всего это сделать? Изначально в структуре не было поля materialIndex, поэтому я просто создал массив чисел с плавающей запятой в Java, заполнил его центром, радиусом и заполнением и отправил его ядру. Однако, когда я добавил materialIndex, я решил преобразовать свою программу для использования буферов NIO, которые не работали (данные были повреждены).

Есть ли лучший подход к передаче массива структур в ядро с JOCL?

...