本 节 书 摘 来 自 华 章 出 版 社 《CUDA高性能并行计算》 一 书 中 的 第3章,第3.3节, 作 者 CUDA for Engineers: An Introduction to High-Performance Parallel Computing[美] 杜安·斯托尔蒂(Duane Storti)梅特·尤尔托卢(Mete Yurtoglu) 著,苏统华 项文成 李松泽 姚宇鹏 孙博文 译 , 更 多 章 节 内 容 可 以 访 问 云 栖 社 区 “华 章 计 算 机” 公 众 号 查 看。
3.3 标准操作流程
看过以上典型的程序流程,我们来分析一下流程哪些部分是CUDA带来的开销,哪些能带来收益。开销应该是十分明显的:创建镜像数组并且在设备端和主机端传输数据,这些都是在串行计算中不需要进行的额外工作。为了抵消这些内存操作的“额外开销”,我们能从GPU成百上千的处理器核心上得到运算上的收益。这些讨论直接引出了一些使用CUDA的推荐策略:
一次性将你的数据复制到设备端。
启动一个执行了大量工作的核函数(因此从大量并行化中获得的收益将大大超出内存传输的代价)。
只将结果复制回主机端一次。
这些并不是一成不变的,但是它们提供了一些有用的规则。在这里,你拥有执行这个典型工作流的所有工具。然而,在我们接触更复杂问题之前,让我们快速浏览一些可以简化开发流程的其他可选方案。