делаю .cuda(async=True), мне самому надо на глаз прикидывать, сколько времени займёт трансфер на гпу и исходя из этого чем-то сообразным по таймингам забивать проц? Или там есть какая-нибудь магия вроде коллбеков/другой асинхронной дичи? Видяха только недавно появилась, ещё разбираюсь с тем, как ее правильно утилизировать
Если я правильно понял вопрос, то... Вычислительные потоки на GPU своего рода "контекст выполнения", они выполняются асинхронно с хостом, после вызова функции ядра управление переходит обратно на хост; главное, когда понадобятся вычисленные данные, делать синхронизацию (в случае, если поток не единственный) и копирование. Поскольку копирование занимает около 600 тактов, важнее будет думать не о том как занять CPU на время счета на GPU, а как загрузить GPU, чтобы вся возня с копированием себя оправдала
Обсуждают сегодня