Правила согласованности для cudaHostAllocMapped
Кто-нибудь знает документацию по модели согласованности памяти для области памяти, выделенной с cudaHostAlloc(..., cudaHostAllocMapped)
? Например, когда записи с устройства становятся видимыми для чтения с хоста, это будет полезно (может произойти после завершения работы ядра, в самое ближайшее время во время выполнения ядра и т. Д.).
1 ответ
Записи с устройства гарантированно будут видны на хосте (или на одноранговых устройствах) после того, как исполняющий поток выполнил __threadfence_system()
вызов (который доступен только для вычислительных возможностей 2.0 или выше).
Они также видны после завершения работы ядра, т. Е. После cudaDeviceSynchronize()
или после того, как один из других методов синхронизации, перечисленных в разделе "Явная синхронизация" Руководства по программированию, был успешно завершен.
Отображаемая память никогда не должна изменяться с хоста, когда ядро использует или может работать, поскольку CUDA в настоящее время не обеспечивает какой-либо способ синхронизации в этом направлении.