zl程序教程

您现在的位置是:首页 >  其他

当前栏目

《CUDA高性能并行计算》----3.3 标准操作流程

流程标准高性能 操作 ---- CUDA 3.3 并行计算
2023-09-11 14:16:11 时间
看过以上典型的程序流程,我们来分析一下流程哪些部分是CUDA带来的开销,哪些能带来收益。开销应该是十分明显的:创建镜像数组并且在设备端和主机端传输数据,这些都是在串行计算中不需要进行的额外工作。为了抵消这些内存操作的“额外开销”,我们能从GPU成百上千的处理器核心上得到运算上的收益。
本 节 书 摘 来 自 华 章 出 版 社 《CUDA高性能并行计算》 一 书 中 的 第3章,第3.3节, 作 者 CUDA for Engineers: An Introduction to High-Performance Parallel Computing[美] 杜安·斯托尔蒂(Duane Storti)梅特·尤尔托卢(Mete Yurtoglu) 著,苏统华 项文成 李松泽 姚宇鹏 孙博文 译 , 更 多 章 节 内 容 可 以 访 问 云 栖 社 区 “华 章 计 算 机” 公 众 号 查 看。 3.3 标准操作流程

看过以上典型的程序流程,我们来分析一下流程哪些部分是CUDA带来的开销,哪些能带来收益。开销应该是十分明显的:创建镜像数组并且在设备端和主机端传输数据,这些都是在串行计算中不需要进行的额外工作。为了抵消这些内存操作的“额外开销”,我们能从GPU成百上千的处理器核心上得到运算上的收益。这些讨论直接引出了一些使用CUDA的推荐策略:

一次性将你的数据复制到设备端。

启动一个执行了大量工作的核函数(因此从大量并行化中获得的收益将大大超出内存传输的代价)。

只将结果复制回主机端一次。

这些并不是一成不变的,但是它们提供了一些有用的规则。在这里,你拥有执行这个典型工作流的所有工具。然而,在我们接触更复杂问题之前,让我们快速浏览一些可以简化开发流程的其他可选方案。


《CUDA高性能并行计算》----3.4 简化操作流程 上面所述的标准操作流是主流的工作方式,然而其中的部分过于死板和烦琐,因此一些NVIDIA专家一起努力提供了一个可替代的流式方案,叫作统一内存(unified memory)。这个方法打破了主机内存和设备内存的围墙,因此你可以只用一个可以从主机端和设备端共同访问的数组(至少看起来是这样的)。
《CUDA高性能并行计算》----0.8 用户指南 我们编写本书的目的就是让广大的技术型读者积极参与到使用CUDA进行GPU并行计算的洪流之中。作为比喻,我们邀请你进行一次基于GPU并行计算的旅程,而本书即是本旅程的导游手册。比喻为导游手册在许多方面都是恰当的,其中包括:
《CUDA高性能并行计算》----2.4 推荐项目 1.去CUDA Zone注册并加入到CUDA开发者中(如果读者还没有这样做的话)。 2.观看 www.nvidia.com/object/nvision08_gpu_v_cpu.html的视频,体会关于并行和串行执行的有趣的对比。
《CUDA高性能并行计算》----3.6 推荐项目 1.改变距离数组中的元素数目并进行实验。当你将数目N定义成128、1024、63、65的时候是否遇到了一些问题? 2.计算包含4096个距离的距离数组并尝试改变TPB。你可以在系统上运行的最大(和最小)线程块大小是多大?注意,这个问题的答案依赖于你的GPU设备的计算能力。
《CUDA高性能并行计算》----0.5 本书的组织结构 除了本章之外,本书包含有九章正文和四个附录。正文章节提供了大多数读者需要掌握的核心知识,而附录用于查缺补漏,补充背景知识。我们的呈现方式鼓励你积极参与到CUDA实践之中。为了充分利用本书,请在你阅读这些章节时,亲自创建、测试和修改书中的应用程序(也称为app)。
《CUDA高性能并行计算》----0.7 本书代码 本书应用程序的代码可以通过www.cudaforengineers.com获取。虽然书中采用了一些代码片断和“骨架”代码(skeleton code),但标记为“代码清单”的代码(包含行号)是真实可运行代码的一部分。
《CUDA高性能并行计算》----1.2 运行我们自己的串行程序 是时候把我们的目光从CUDA样例程序移开,构建并运行我们自己的程序。在本节我们将给出完成相同功能的两个应用的代码``dist_v1``和``dist_v2``。每个应用都计算了从一个参考点到N个在直线上均匀分布的点之间的一组距离。