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

简介: 看过以上典型的程序流程,我们来分析一下流程哪些部分是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的推荐策略:

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

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

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

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

相关文章
|
Unix 异构计算 Windows
带你读《基于CUDA的GPU并行程序开发指南》之一:CPU并行编程概述
本书旨在帮助读者了解与基于CUDA的并行编程技术有关的基本概念,并掌握实用c语言进行GPU高性能编程的相关技巧。本书第一部分通过CPU多线程编程解释了并行计算,使得没有太多并行计算基础的读者也能毫无阻碍地进入CUDA天地;第二部分重点介绍了基于CUDA的GPU大规模并行程序的开发与实现,并通过大量的性能分析帮助读者理解如何开发一个好的GPU并行程序以及GPU架构对程序性能的影响;本书的第三部分介绍了一些常用的CUDA库。
|
机器学习/深度学习 存储 NoSQL
X-SIMD高性能跨平台向量化加速库
X-SIMD是平头哥基于开源SIMDe开发的一个header-only C程序库,提供了一种简单易用的跨平台SIMD程序优化方案,旨在为不支持SIMD指令集的平台提供SIMD支持。X-SIMD可以帮助开发者快速完成应用软件迁移arm平台,减少用户重新编写SIMD算法工作量。
|
机器学习/深度学习 缓存 分布式计算
|
并行计算 Linux 异构计算
《CUDA高性能并行计算》----3.4 简化操作流程
上面所述的标准操作流是主流的工作方式,然而其中的部分过于死板和烦琐,因此一些NVIDIA专家一起努力提供了一个可替代的流式方案,叫作统一内存(unified memory)。这个方法打破了主机内存和设备内存的围墙,因此你可以只用一个可以从主机端和设备端共同访问的数组(至少看起来是这样的)。
1763 0
|
并行计算 C++
《CUDA高性能并行计算》----0.8 用户指南
我们编写本书的目的就是让广大的技术型读者积极参与到使用CUDA进行GPU并行计算的洪流之中。作为比喻,我们邀请你进行一次基于GPU并行计算的旅程,而本书即是本旅程的导游手册。比喻为导游手册在许多方面都是恰当的,其中包括:
1348 0
|
并行计算 C语言
《CUDA高性能并行计算》----0.5 本书的组织结构
除了本章之外,本书包含有九章正文和四个附录。正文章节提供了大多数读者需要掌握的核心知识,而附录用于查缺补漏,补充背景知识。我们的呈现方式鼓励你积极参与到CUDA实践之中。为了充分利用本书,请在你阅读这些章节时,亲自创建、测试和修改书中的应用程序(也称为app)。
1706 0
|
并行计算
《CUDA高性能并行计算》----1.4 推荐项目
项目1~5是关于运行其他CUDA样例程序的练习。
1436 0
|
Web App开发 并行计算 异构计算
《CUDA高性能并行计算》----2.4 推荐项目
1.去CUDA Zone注册并加入到CUDA开发者中(如果读者还没有这样做的话)。 2.观看 www.nvidia.com/object/nvision08_gpu_v_cpu.html的视频,体会关于并行和串行执行的有趣的对比。
1881 0