linux内核|CUDA 6中的统一内存模型( 四 )


这篇文章的例子可以在Github上找到 。 统一内存模型的光明前景
CUDA 6中关于统一内存模型的最令人兴奋的事情之一就是它仅仅是个开始 。 我们针对统一内存模型有一个包括性能提升与特性的长远规划 。 我们的第一个发行版旨在使CUDA编程更容易 , 尤其是对于初学者而言 。 从CUDA 6开始 ,cudaMemcpy()不再是必需的 。 通过使用 cudaMallocManaged() , 您可以拥有一个指向数据的指针 , 并且可以在CPU和GPU之间共享复杂的C / C++数据结构 。 这使编写CUDA程序变得容易得多 , 因为您可以直接编写内核 , 而不是编写大量数据管理代码并且要维护在主机和设备之间所有重复的数据 。 您仍然可以自由使用 cudaMemcpy()(特别是 cudaMemcpyAsync())来提高性能 , 但现在这不是一项要求 , 而是一项优化 。
CUDA的未来版本可能会通过添加数据预取和迁移提示来提高使用统一内存模型的应用程序的性能 。 我们还将增加对更多操作系统的支持 。 我们的下一代GPU架构将带来许多硬件改进 , 以进一步提高性能和灵活性 。 探索更多
在CUDA 6中 , 从Kepler GPU架构(计算能力3.0或更高版本)开始 , 在64位Windows 7、8和Linux操作系统(内核2.6.18+)上支持统一内存模型 。 想尽早地了解CUDA 6的统一内存模型 , 请在可用的CUDA 6工具包发行候选版中成为CUDA注册开发人员 , 以接收通知 。


推荐阅读