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