Mojo Academy · Урок

Передача данных на устройство и обратно

Управляйте передачей памяти между хостом и устройством.

Урок 4 из 413 шагов

«Передача данных на устройство и обратно» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Зачем нужны графические процессоры для рабочих нагрузок искусственного интеллекта
  2. Потоки, блоки и сетки
  3. Написание функции ядра GPU
  4. Передача данных на устройство и обратно
← Назад к Mojo Academy