в моем коде C OpenCL я использую clSetKernelArg для создания памяти "переменного размера" __local для использования в моих ядрах, которая недоступна в OpenCL как таковом. Смотрите мой пример:
clSetKernelArg(clKernel, ArgCounter++, sizeof(cl_mem), (void *)&d_B);
...
clSetKernelArg(clKernel, ArgCounter++, sizeof(float)*block_size*block_size, NULL);
...
kernel="
matrixMul(__global float* C,
...
__local float* A_temp,
...
)"
{...
Теперь мой вопрос: как сделать то же самое в pyopencl?
Я просмотрел примеры, которые поставляются с pyopencl, но единственное, что я смог найти, это подход с использованием шаблонов, который, как я понял, кажется мне излишеством. См. пример.
kernel = """
__kernel void matrixMul(__global float* C,...){
...
__local float A_temp[ %(mem_size) ];
...
}
Что ты порекомендуешь?