《OpenACC并行程序设计:性能优化实践指南》一 导读

前言

欢迎阅读本书,这是一本由浅入深的书籍,从初学者到高级开发人员,都可以通过本书了解OpenACC的相关知识。本书由世界各地的24位作者共同编著而成,他们在高度并行编程的教学和实践方面分享了自己的专业知识。书中的例子既有时效性又不会过时。每个章节都是自包含的,可用于自学,也可以作为课堂教学的一部分。

这是一本关于并行编程的书,不仅仅介绍OpenACC语法或从文档中收集的信息,更介绍了如何编写实际的、高性能的以及可移植的程序,这些程序可以运行在从CPU到GPU的大量设备上。具体而言,书中演示了使用PGI、Cray和PathScale等供应商提供的编译器编译示例代码,并在Intel x86处理器、Cavium 96核64位ARMv8处理器芯片集和NVIDIA GPU上运行。
性能和分析相辅相成,这也是为什么我们将开源代码和PGI分析器都包含在内。
自从2012年6月11日我第一次在Dr. Dobbs网站上看到“Easy GPU Parallelism with OpenACC”以来,OpenACC标准逐步升级,编译器技术逐渐成熟,发展速度令人惊讶。过去几年的突飞猛进意味着我们现在可以在大多数HPC站点上使用OpenACC,甚至免费提供的GNU编译器工具集也支持OpenACC。我们选择在中级和高级编程章节中提供实际应用示例,以方便读者实践,这是因为程序员需要解决实际问题,而不是解决课堂问题。同时,OpenACC还是一个很新的并行编程标准,书中的几个介绍性章节非常值得一读!

目录

第1章 从串行编程到并行编程
1.1 简单的数据并行循环
1.1.1 OpenACC内核构件与并行构件对比
1.1.2 OpenACC并行的多种形式
1.1.3 accFill_ex2运行时结果
1.2 简单的任务并行示例
1.3 Amdahl定律及其扩展
1.3.1 大O表示法和数据传输
1.3.2 accTask.cpp代码的扩展性
1.4 并行执行和竞争条件
1.5 无锁编程
1.6 控制并行资源
1.7 让生活更简单
1.8 参考文献

第2章 性能导向开发
2.1 测试代码:共轭梯度法
2.1.1 代码编译
2.1.2 初始测试
2.2 描述并行度
2.2.1 加速waxpby
2.2.2 加速dot
2.2.3 加速matvec
2.3 描述数据移动
2.4 优化循环
2.4.1 缩短向量长度
2.4.2 增加并行度
2.5 在多核系统中并行运行
2.6 小结

第3章 使用Score-P和Vampir分析混合应用性能
3.1 性能分析技术和术语
3.2 逐步性能提升
3.3 激光驱动电子束的粒子单元模拟
3.4 通过代码插装准备性能测量
3.5 在应用程序执行期间记录性能信息
3.6 第一个并行PIConGPU实现
3.7 释放主机进程
3.8 优化GPU内核
3.9 增加GPU任务并行
3.10 使用Score-P和Vampir记录OpenACC运行时事件
3.11 小结
3.12 参考文献

时间: 2024-08-07 21:55:39

《OpenACC并行程序设计:性能优化实践指南》一 导读的相关文章

《构建实时机器学习系统》一第2章 实时监督式机器学习 2.1 什么是监督式机器学习

第2章 实时监督式机器学习 2.1 什么是监督式机器学习 监督式机器学习旨在利用训练集数据,建立因变量和自变量之间的函数映射关系.如果用X 代表自变量,Y 代表因变量,f 代表映射函数,b 代表映射函数的参数,那么监督式机器学习的任务就是找到恰当的函数f 和参数 ,让下面的映射尽量符合要求: y=f (x;b,e) 这里e为实际情况中的随机扰动项. 下面就来具体看看在监督式机器学习中,因变量.自变量和预测函数的含义. (1)因变量 因变量是我们试图通过机器学习模型预测的变量,在实际应用中它往往无

《构建实时机器学习系统》一3.4 数据分析的三个要点

3.4 数据分析的三个要点 本书后面的章节中将会以前面发现的均值回归的性质为依托,设计实时机器学习交易策略进行交易.好多读者看到这里可能已经跃跃欲试,等不及要开始搭建服务器开始赚他一个亿了.但是在这之前我们需要总结一下在开展机器学习工作前期关于数据分析的几个原则. 3.4.1 不断验证假设 验证假设是否正确是机器学习前期数据分析最重要的目的.这里的假设包括但不限于:数据的格式.变量的数量.数据是否缺失.是否有极端值.采样是否均衡等.上面这些假设,如果稍有差错,就会让在后面得到的机器学习模型无用武

《构建实时机器学习系统》一 导读

前 言 机器学习从业人员的艰难选择 作为机器学习从业人员,如果今天突然被公司或学校开除,你能养活自己吗?邻居老大妈买土鸡蛋不买神经网络模型,东门老大爷认识郭德纲不认识朴素贝叶斯,面容姣好的"翠花"只认房产证不认 Zookeeper.即使你身怀绝技,有着远大的抱负,机器学习应用难以变现也是事实.为了能维持生计,众多机器学习从业人员只能进入大公司.大组织.但限于流程和已有的体制,在这样的工作环境下,他们很难完全发挥自己的潜能. 太多的好朋友,在脱离体制和大公司的时候豪情万丈,吃散伙饭时和战

《构建实时机器学习系统》一2.2 怎样衡量监督式机器学习模型

2.2 怎样衡量监督式机器学习模型 本章前面对一个好的实时机器学习模型的衡量只提到了"优秀" "合适"这样的字眼,本节将会详细展开,讨论监督式实时机器学习模型的衡量标准. 在实际应用中,监督式实时机器学习效果的好坏可以分为统计量是否优秀和应用业绩是否优秀两个方面.下面将按照这两部分分别进行介绍. 在讨论技术细节之前,先进行一下符号的定义: 给定 n 组已知的自变量和因变量{(Yi, Xi)}ni=1作为测试数据集,对于任意i,我们通过自变量Xi和模型f(Xi; b)

《构建实时机器学习系统》一1.4 实时是个“万灵丹”

1.4 实时是个"万灵丹" 成长会解决一切问题.如果一个企业正在飞速成长,大家步调一致.同心齐力,那么内斗或管理混乱等问题将是难以出现的.而当企业的成长受到了制约,停滞不前的时候,往往就会出现众多非技术性原因造成的悲剧. 我们强调机器学习的实时性,就是为了保证应用机器学习的企业能够利用机器学习的资源大踏步向前,而不会被早早地制约,徘徊不前.机器学习就已经够有挑战性的了,为什么还要采用实时机器学习?根据我们的经验,实时机器学习上马应该越早越好,原因具体有以下三点. 1.实时架构稳定性可以

《构建实时机器学习系统》一1.5 实时机器学习的分类

1.5 实时机器学习的分类 按照实际应用中采用的方式不同,实时机器学习可以分为硬实时.软实时和批实时三种模式,下面将分别进行介绍. 1.5.1 硬实时机器学习 硬实时的定义是:响应系统在接收到请求之后,能够马上对请求进行响应反馈,做出处理.硬实时机器学习的主要应用场景是网页浏览.在线游戏.高频交易等对时效性要求非常高的领域.在这些领域中,我们往往需要将相应延迟控制在若干毫秒以下.对于高频交易等场景,更是有不少计算机软件.硬件专家,开发出了各种专有模块以在更短的时间内完成交易,获得超额利润. 在本

《构建实时机器学习系统》一1.8 实时机器学习模型的生存期

1.8 实时机器学习模型的生存期 进行实时机器学习开发必须考虑生存期.生存期是指一个系统从提出.设计.开发. 测试到部署运用.维护.更新升级或退役的整个过程.若在生存期设计上出现了数据,那么在后面的使用中就会出现各种各样的瓶颈阻碍应用产生价值. 从软件工程的角度上讲,开发实时机器学习也遵从构思.分析.设计.实现和维护五个步骤,这五个步骤可能会循环往复,随着业务的发展进行多次迭代.实时机器学习模型的应用由于其技术的特殊性,也具有自己的小型生存期,其中包括数据收集.数据分析.离线手工建模评测.上线自

《构建实时机器学习系统》一1.6 实时应用对机器学习的要求

1.6 实时应用对机器学习的要求 现今每年都会发表成千上万的机器学习相关的论文,其中不乏表现突出的方法论,但是并不是所有的机器学习模型在实际应用中都适用.实时机器学习的应用主要有以下几个方面的要求. 1.模型可扩展性 模型可扩展性需要整个机器学习应用的各个部分均可以轻易地根据实际需要进行扩展.这里的扩展可能是增加新的预测变量,也可能是在新的市场. 人群和用户界面中进行使用,还有可能是加入新的架构部件,进行可视化等操作. 2.模型运用低延迟性 低延迟性是实时机器学习应用区别于其他机器学习应用的核心

《构建实时机器学习系统》一1.7 案例:Netflix在机器学习竞赛中学到的经验

1.7 案例:Netflix在机器学习竞赛中学到的经验 美国领先的付费视频公司 Netflix 在机器学习.系统推荐方面都做出了卓越的贡献, 早在 2007 年,Netflix 就率先提出了百万美元大奖,奖励在 Netflix Prize 竞赛中优胜的队伍.Netflix Prize通过为期三年的竞赛,积累了机器学习宝贵的第一手资料,成为了机器学习中的经典案例,这里我们介绍以下两个方面. 1.7.1 Netflix 用户信息被逆向工程 Netflix Prize进行影片推荐预测时,使用的数据包括

《构建实时机器学习系统》一3.3 利用 Pandas 分析实时股票报价数据

3.3 利用 Pandas 分析实时股票报价数据 熟悉一项软件的最好方法就是通过示例来亲自使用它.这里将会通过分析苹果公司 2015 年 8 月 3 日秒级股票价格的数据来熟悉 Pandas 的用法.建议通过Python 笔记本或交互式窗口的方法来进行下面的操作. 首先,需要导入相关的模块,在导入Pandas模块的同时,我们还用到了Datetime模块.Datetime模块的主要功能是对时间.日期等数据进行处理,导入命令如下: import pandas as pd from datetime