Необходимо, чтобы память хоста была заблокирована на странице для достижения асинхронной передачи данных и вычислений на устройстве с помощью компилятора pgi?
Я тестировал асинхронную передачу данных между устройством nvidia-K80 на хост и суперпозицией ядра gpu с OpenACC. Мне удалось увидеть суперпозицию передачи и вычисления данных с помощью профилировщика nvprof при компиляции со следующей строкой.
pgC++ -ta=tesla: закреплено -acc -Minfo -o main main.cpp
Тем не менее, при чтении документации по компиляторам pgi упоминается, что: флаг компиляции -ta=tesla:pinned делает все выделение памяти на хосте для блокировки страниц. Есть ли альтернативная форма для достижения такого поведения без побочного эффекта с чисто директивами openACC? Я притворяюсь, что использую эту функцию в большом проекте.
Обратите внимание, что строка компиляции
pgC++ -acc -Minfo -o main main.cpp
Не достигает желаемого поведения. Альтернативно, использование cudaHostAlloc для инициализации областей памяти с высоким трафиком между хостом и устройством работает. Мне любопытно чистое решение OpenACC, хотя.