Передача данных на устройство и обратно
Управляйте передачей памяти между хостом и устройством.
«Передача данных на устройство и обратно» — бесплатный урок Mojo Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Mojo Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Mojo Academy содержит 4 уроков всего.
Две отдельные области памяти
У CPU и GPU есть собственная память. GPU не может читать массивы хоста, пока данные не окажутся на устройстве.
Хост и устройство
Сторону CPU мы называем хостом, а сторону GPU — устройством. Перемещение данных между ними — важная часть работы с GPU.
Выделение памяти на устройстве
Сначала зарезервируйте на GPU место для данных. Этот буфер устройства будет хранить входные и выходные данные.
var d_a = ctx.enqueue_create_buffer[DType.float32](n)Копирование входных данных
Затем скопируйте массивы хоста в буферы устройства. Благодаря этой загрузке GPU получает нужные ему числа.
ctx.enqueue_copy(d_a, h_a)Запуск ядра
Когда данные находятся на устройстве, запустите ядро. Оно читает и записывает буферы устройства, а не буферы хоста.
ctx.enqueue_function[kernel](grid_dim=blocks, block_dim=256)Копирование результатов обратно
Результат остаётся на GPU, пока вы его не заберёте. Выгрузка копирует буфер результата обратно в память хоста.
ctx.enqueue_copy(h_out, d_out)Работа ставится в очередь, а не выполняется сразу
Эти вызовы ставятся в очередь на GPU, а не завершаются мгновенно. Перед тем как доверять результатам на хосте, необходимо вызвать synchronize.
ctx.synchronize()Полный цикл
Полный цикл состоит из загрузки, вычисления и выгрузки. Представьте, как данные совершают путь туда и обратно от хоста к устройству и обратно.
Передача занимает время
Копирование по шине медленнее вычислений. Каждая передача может свести ускорение на нет, если выполнять её слишком часто.
Храните данные на устройстве
Объединяйте несколько ядер в цепочку, используя одни и те же буферы, прежде чем копировать данные обратно. Минимальное число циклов туда и обратно помогает сохранить преимущество GPU.
Освобождайте выделенную память
Память устройства ограничена, поэтому освобождайте больше не нужные буферы. Правила владения Mojo помогают освободить их в нужный момент.
Быстрая проверка
Вы хотите, чтобы программа на GPU действительно работала быстрее от начала до конца.
Итоги
Загрузите входные данные на устройство, запустите ядро, затем выгрузите результаты и вызовите synchronize, сводя дорогостоящие передачи к минимуму. 🔁
Изучай Mojo с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 30
- Уроки
- 120
Часто задаваемые вопросы
Урок «Передача данных на устройство и обратно» бесплатный?
Да — полный текст урока «Передача данных на устройство и обратно» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Mojo Academy, подпишись на CoddyKit PRO. Курс Mojo Academy содержит 4 уроков всего.
Чему я научусь в уроке «Передача данных на устройство и обратно»?
Управляйте передачей памяти между хостом и устройством. Ты практикуешь Mojo Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Mojo Academy?
Предыдущий опыт не требуется. Mojo Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Передача данных на устройство и обратно»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Mojo Academy?
Да. Каждый урок Mojo Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Зачем нужны графические процессоры для рабочих нагрузок искусственного интеллекта
- Потоки, блоки и сетки
- Написание функции ядра GPU
- Передача данных на устройство и обратно