0Pricing
CUDA Academy · Урок

Упреждающая загрузка с помощью cudaMemPrefetchAsync

Перемещайте страницы до того, как они понадобятся.

«Упреждающая загрузка с помощью cudaMemPrefetchAsync» — бесплатный урок CUDA Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CUDA Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CUDA Academy содержит 4 уроков всего.

Перестаньте платить за ошибки страниц

Вместо ожидания медленных ошибок при первом обращении можно переместить страницы заранее. cudaMemPrefetchAsync отправляет управляемые данные на устройство до того, как они понадобятся ядру.

Основной вызов

Укажите указатель, количество байтов и целевое устройство. Эта предварительная загрузка заранее перемещает весь диапазон одним эффективным блоком.

cudaMemPrefetchAsync(data, n * sizeof(float), 0);

Выберите целевое устройство

Третий аргумент — это идентификатор устройства. Передайте номер GPU, чтобы подготовить данные на этом GPU к запуску ядра.

int dev = 0;
cudaMemPrefetchAsync(data, bytes, dev);

Предварительно загрузите данные обратно на CPU

Используйте специальный идентификатор cudaCpuDeviceId, чтобы вернуть результаты на хост. Сделайте это до чтения данных кодом CPU, чтобы избежать множества ошибок страниц.

cudaMemPrefetchAsync(data, bytes, cudaCpuDeviceId);

Это асинхронная операция

Слово Async в названии означает именно то, что заявлено: вызов немедленно возвращает управление и выполняется в потоке. CPU продолжает работать, пока страницы перемещаются в фоновом режиме.

Перекрывайте с вычислениями

Поскольку предварительная загрузка выполняется в потоке, она может перекрываться с другими ядрами. Подготавливайте следующую часть, пока текущая ещё обрабатывается.

cudaMemPrefetchAsync(next, bytes, dev, stream);

Одна передача лучше множества ошибок

Одна предварительная загрузка крупного блока намного дешевле тысяч мелких ошибок страниц. Разрозненные накладные расходы заменяются одной непрерывной передачей с высокой пропускной способностью.

Предварительно загружайте правильный диапазон

Подготавливайте только те данные, к которым действительно обращается ядро. Предварительная загрузка огромного буфера, который ядро почти не читает, лишь напрасно расходует пропускную способность и память GPU.

Двусторонний шаблон

Выстраивается понятный ритм: предварительно загрузить данные на GPU, запустить ядро, предварительно загрузить результаты обратно. Так миграция на обоих концах исключается из критического пути.

Измеряйте, а не гадайте

Добавьте предварительную загрузку, затем проверьте в Nsight, стало ли меньше ошибок и плотнее ли временные диаграммы. Пусть профилирование подтвердит выигрыш, а не интуиция.

Удобство и контроль

Предварительная загрузка сохраняет простоту управляемой памяти с одним указателем, одновременно возвращая вам контроль над временем операций. Вы получаете лучшее от обоих подходов.

Быстрая проверка

Давайте убедимся, что вы поняли преимущества предварительной загрузки.

Итоги: предварительная загрузка

Вы научились заранее подготавливать страницы с помощью cudaMemPrefetchAsync, выбирая GPU или cudaCpuDeviceId. Операция перекрывается с работой потоков и эффективнее обработки ошибок страниц. Отличная работа! ✨

Часто задаваемые вопросы

Урок «Упреждающая загрузка с помощью cudaMemPrefetchAsync» бесплатный?

Да — полный текст урока «Упреждающая загрузка с помощью cudaMemPrefetchAsync» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CUDA Academy, подпишись на CoddyKit PRO. Курс CUDA Academy содержит 4 уроков всего.

Чему я научусь в уроке «Упреждающая загрузка с помощью cudaMemPrefetchAsync»?

Перемещайте страницы до того, как они понадобятся. Ты практикуешь CUDA Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать CUDA Academy?

Предыдущий опыт не требуется. CUDA Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Упреждающая загрузка с помощью cudaMemPrefetchAsync»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке CUDA Academy?

Да. Каждый урок CUDA Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

  1. Один указатель для обеих сторон
  2. Перенос страниц по требованию
  3. Упреждающая загрузка с помощью cudaMemPrefetchAsync
  4. Подсказки через cudaMemAdvise
← Назад к CUDA Academy