Я очень новичок в программировании GPGPU, поэтому, пожалуйста, прости меня, если вопрос не особенно уместен. Из того, что я понимаю, программирование на GPU - очень сложная часть инженерной работы по сравнению с обычным программированием на CPU. Нужно быть очень осторожным в вопросах расхождения, тайлинга, распределенного распределения памяти и перекрытия связи между устройствами и вычислениями на устройстве.
После небольшого исследования я нашел библиотеку тяги, которая, похоже, пытается имитировать C ++ STL. Это довольно мило. Однако, исходя из моего очень ограниченного опыта и видя все микроуправления, необходимые для получения хорошей производительности, я немного скептически отношусь к производительности. Может ли тяга эффективно обрабатывать всю сложную часть программирования внутри? Некоторые очень известные библиотеки, такие как PETSc, похоже, используют этот пакет, что заставляет меня верить, что так или иначе должно.
Мне было интересно, могли бы люди с большим опытом работы с CUDA и толком сказать пару слов о производительности пакета по сравнению с низкоуровневым программированием CUDA. Когда я могу использовать тягу и когда я должен вернуться к CUDA?