CUDA学习(九十四)
数据迁移和一致性:统一内存通过将数据迁移到正在访问的设备(即将数据移动到主机内存(如果CPU正在访问它,并将数据移动到设备内存,如果GPU将访问它),来尝试优化内存性能)。 数据迁移是统一内存的基础,但对于程序而言是透明的。 系统会尝试将数据放置在最有效访问的位置,而不会违反一致性。数据的物理位置对于程序是不可见的,并且可以随时更改,但访问数据的虚拟地址将保持任何处理器的有效性和连贯性,而不管本地是什么。 请注意,保持一致性是主要要求,在性能之前; 在主机操作系统的限制下,系统被允许无法访问或移动数据,以保持处理器之间的全局一致性。计算能力低于6.x的GPU架构不支持托管数据向GPU按需细粒度移动。无论何时启动GPU内核,通常都必须将所有托管内存传输到GPU内存,以避免内存访问出现故障。通过计算能力6.x,引入了新的GPU页面错误机制,可提供更加无缝的统一内存功能。结合系统范围的虚拟地址空间,页面错误提供了几个好处。首先,页面错误意味着CUDA系统软件在每次内核启动之前不需要将所有托管的内存分配同步到GPU。如果在GPU上运行的内核访问不在其内存中的页面,则它会发生故障,从而允许页面按...
