Вы можете использовать Eager Compilation для предварительной компиляции ядра CUDA для данной подписи: http://numba.pydata.org/numba-doc/latest/user/jit.html?highlight=eager#eager -компиляция
Обратите внимание, что бэкэнд CUDA поддерживает только одну подпись для Eager Compilation (в то время как цель CPU поддерживает несколько), и ядра, скомпилированные Eager, не проверяют типы при вызове ядра. Это приводит к более быстрому запуску, но открывает возможность незамеченной пользовательской ошибки, позволяя типам аргументов не соответствовать между скомпилированным ядром и тем, что передается.
Однако, отмечая из вашего вопроса, что вы При использовании нескольких процессов, а не потоков, у вас по-прежнему будет проблема, поскольку вам придется предварительно скомпилировать и затем выполнить ветвь, что CUDA все равно не понравится. Возможно ли вам использовать потоки в вашем приложении с модулем потоков вместо этого?
Дополнительный вопрос: если время выполнения вашего приложения / ядра графического процессора настолько мало, что время компиляции составляет доминирующий фактор, имеет ли смысл использовать GPU для вашего приложения? После того, как вы обработали одно изображение в каждом потоке, даже при JIT-компиляции, не будет повторных накладных расходов для этого потока - при последующих запусках ядро будет извлечено из кеша. Если бы вы обрабатывали много изображений, время компиляции стало бы незначительным в общем времени выполнения.