есть способ одновременного доступа к управляемой памяти с помощью CPU и GPU с возможностью вычислений 5.0
No.
или любым методом, который может сделать CPUдоступ к управляемой памяти при работающем ядре графического процессора.
Не на устройстве с вычислительной способностью 5.0.
Вы можете иметь «одновременный» доступ ЦПУ и ГПУ к данным, используя CUDA нольметоды копирования .
Полное руководство как по памяти Unified, так и по памяти Pinned / Mapped / Zero-copy выходит за рамки того, что я могу написать в ответе здесь.Unified Memory имеет свой собственный раздел в руководстве по программированию.Обе эти темы подробно описаны здесь, в теге cuda
в SO, а также во многих других местах в Интернете. Любые вопросы, вероятно, будут отвечать с помощью поиска Google.
В двух словах, память с нулевым копированием в 64-битной ОС доступна через API закрепления хоста, такой как cudaHostAlloc()
.Память, выделенная таким образом, является памятью хоста и всегда остается там, но она доступна для графического процессора.Доступ к этой памяти из графического процессора в память хоста осуществляется через шину PCIE, поэтому он намного медленнее, чем обычный глобальный доступ к памяти.Указатель, возвращаемый распределением (в 64-битной ОС), может использоваться как в коде хоста, так и в коде устройства.Вы можете изучить примеры кодов CUDA, которые используют методы нулевого копирования, такие как simpleZeroCopy
.
В отличие от этого, обычная унифицированная память (UM) - это данные, которые будут перенесены в процессор, которыйиспользуй это.В режиме предварительного паскаля единой системы обмена сообщениями эта миграция запускается вызовами ядра и синхронизирующими операциями.Одновременный доступ хоста и устройства в этом режиме невозможен.Для устройств Pascal и других устройств в надлежащем пост-паскальском режиме единой системы обмена сообщениями (в основном только для 64-разрядной версии Linux, CUDA 8+) данные переносятся по требованию даже во время выполнения ядра, что обеспечивает ограниченную форму «одновременного» доступа.,Единая память имеет различные режимы поведения, и некоторые из них в некоторых случаях приводят к тому, что выделение объединенной памяти «затухает» в выделение хоста с фиксированным / нулевым копированием.