В этом материале
Контролируйте выделение и проверяйте размещение: перемещение потока не переносит автоматически его прежние страницы.
Привязка CPU не описывает каждую страницу
Размещение потока хоста рядом с GPU является лишь частью эксперимента с передачей данных. Страницы его буферов могли выделяться в другом месте или до перемещения потока. Поэтому процесс способен выглядеть правильно привязанным к CPU, хотя данные используют другой путь памяти.
Руководство Linux по NUMA memory policy объясняет области действия политики и выделение страниц. В частности, смена политики задачи не переносит автоматически страницы, уже размещённые при прежних условиях. Поэтому момент выделения является важной частью воспроизводимого эксперимента с буферами хоста, а не второстепенной подробностью запуска.
Ограничьте проверку конкретным буфером
Выберите одну GPU, тип буфера хоста, постоянный размер и определённое направление передачи. Запишите реально доступные процессу ограничения CPU и узлов памяти. Контейнер или планировщик могут ограничивать запрошенную политику, поэтому желаемая конфигурация ещё не доказывает фактического размещения данных.
Для анонимного тестового буфера разделяйте резервирование адресного пространства и заполнение физических страниц. Сохраняйте сведения о потоке, который инициализирует буфер, и его политике. Буферы библиотеки, закреплённую и файловую память рассматривайте по реальному пути выделения вместо предположения, что каждое выделение подчиняется одному универсальному правилу first touch.
Наблюдайте выделение вместе с передачей
В руководстве CUDA по производительности перемещение данных между хостом и устройством и управление памятью рассматриваются как отдельные вопросы. Если изучается устойчивая передача, выделение или регистрацию буфера измеряйте вне этого интервала. Если важен старт, сообщайте его отдельно вместо молчаливого исключения из всех результатов.
Сохраняйте наблюдаемое размещение страниц там, где платформа его предоставляет, путь GPU и границу завершения передачи. Указывайте единицы и направление: показатель может относиться к одной передаче или более длинной последовательности. Ускоренное выделение не обязательно даёт самый быстрый путь многократного копирования.
Сравнивайте заново подготовленные условия
Условное сравнение может использовать два свежих буфера одинакового размера и содержимого, но с разными документированными условиями размещения. Код передачи, устройство, направление и конкурентность должны сохраняться. Повторное использование старого буфера после перемещения потока не изолирует нужное различие: существующие страницы могут оставаться на прежнем месте.
Повторяйте условия в записанном порядке и учитывайте другую работу хоста. Если наблюдаемое распределение по узлам памяти не различается, эксперимент не установил задуманное сравнение локального и удалённого размещения. Укажите ограничение вместо автоматического объяснения любой разницы измерений влиянием NUMA.
Свяжите результат с обслуживанием модели
После небольшой проверки выясните, какие буферы выделяет реальный движок, какие потоки их инициализируют и переживают ли они смену рабочих процессов. Микробенчмарк не устанавливает поведение всего сервера модели. Полное время запроса может определяться токенизацией, накопителем и вычислениями внутри устройства.
Полезный результат содержит политику выделения, наблюдаемые страницы, тип буфера, интервал передачи и условия нагрузки. Он объясняет конкретный путь памяти, не обещая, что одна привязка CPU исправит производительность GPU или что изменение политики процесса перенесёт все существующие данные. Такой документ позволяет повторить именно проверенный опыт при последующей смене платформы или контейнерной конфигурации.