CUDA Academy · Урок

Подсказки через cudaMemAdvise

Влияйте на выбор драйвером размещения данных.

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

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

Давайте рекомендации, а не команды

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

Форма вызова

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

cudaMemAdvise(data, bytes, advice, device);

ReadMostly для совместного доступа

Используйте cudaMemAdviseSetReadMostly для данных, которые многие устройства читают, но редко изменяют. Драйвер может хранить копии только для чтения на каждой стороне, чтобы избежать миграции.

cudaMemAdvise(data, bytes,
  cudaMemAdviseSetReadMostly, dev);

PreferredLocation закрепляет расположение

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

cudaMemAdvise(data, bytes,
  cudaMemAdviseSetPreferredLocation, dev);

AccessedBy пропускает миграцию

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

cudaMemAdvise(data, bytes,
  cudaMemAdviseSetAccessedBy, dev);

Подсказки прекращают перетягивание

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

Рекомендация сохраняется

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

У каждой рекомендации есть отмена

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

cudaMemAdvise(data, bytes,
  cudaMemAdviseUnsetReadMostly, dev);

Рекомендация плюс предварительная выборка

Эти два инструмента хорошо работают вместе. Установите PreferredLocation, чтобы задать основное размещение, затем выполните предварительную выборку, чтобы заполнить его, — и перемещения перейдут в устойчивый режим.

В конце концов, это лишь подсказка

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

Ваш набор инструментов Unified Memory

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

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

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

Итоги: рекомендации по памяти

Вы изучили подсказки cudaMemAdvise — ReadMostly, PreferredLocation и AccessedBy, — которые помогают управлять размещением страниц. Сочетайте их с предварительной выборкой и профилированием. Отличная работа! 🎯

Можно начать бесплатно

Изучай C++ с ИИ-репетитором — бесплатно

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

Курсы
30
Уроки
120

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

Урок «Подсказки через cudaMemAdvise» бесплатный?

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

Чему я научусь в уроке «Подсказки через cudaMemAdvise»?

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

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

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

Сколько времени занимает урок «Подсказки через cudaMemAdvise»?

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

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

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

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

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