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