Если вы используете CUDA - либо напрямую через C, либо с pyCUDA - вся тяжелая числовая работа, которую вы выполняете, выполняется в ядрах, которые выполняются на gpu и написаны на CUDA C (непосредственно вами или косвенно с поэлементными ядрами). Поэтому в этих частях кода не должно быть реальной разницы в производительности.
Теперь инициализация массивов и любой последующий анализ будут выполняться на python (возможно, с использованием numpy), если вы используете pyCUDA, и это, как правило, будет значительно медленнее, чем непосредственно в скомпилированном языке (хотя, если вы создали свой numpy / scipy таким образом, что он напрямую связывается с высокопроизводительными библиотеками, тогда эти вызовы, по крайней мере, будут одинаковыми на любом языке). Но, надеюсь, ваша инициализация и финализация - это небольшие доли от общего объема работы, которую вы должны выполнить, так что, даже если там есть значительные накладные расходы, все же, надеюсь, это не окажет большого влияния на общее время выполнения.
И на самом деле, если окажется, что части вычислений на python действительно влияют на производительность вашего приложения, начало разработки в pyCUDA все же может быть отличным способом для начала, так как разработка значительно проще, и вы можете всегда заново реализуйте те части кода, которые слишком медленны в Python на прямом C, и вызывайте их из python, получая некоторые из лучших в обоих мирах.