Я работал с OpenCL над несколькими проектами, но всегда писал ядро как одну (иногда довольно большую) функцию.Сейчас я работаю над более сложным проектом и хотел бы разделить функции между несколькими ядрами.
Но все примеры, которые я могу найти, показывают ядро как один файл (очень немногие даже вызывают вторичные функции).Кажется, что можно использовать несколько файлов - clCreateProgramWithSource()
принимает несколько строк (и я предполагаю, что объединяет их) - хотя Program()
pyopencl принимает только один источник.
Так что я хотел бы услышатьот любого, кто имеет опыт в этом:
- Есть ли проблемы, связанные с несколькими исходными файлами?
- Является ли наилучшим обходным решением для pyopencl просто объединить файлы?
- Есть ли способ скомпилировать библиотеку функций (вместо того, чтобы передавать источник библиотеки с каждым ядром, даже если не все используются)?
- Если необходимо каждый раз передавать источник библиотеки, используются неиспользуемые функцииОтклонено (без накладных расходов)?
- Любые другие лучшие практики / предложения?
Спасибо.