这本书通过详细讲解X86SSE与AVX、ARMNeon、OpenMP、CUDA和OpenCL等技术,结合编程方法、编程优化和编程实践,提供了全面的并行编程知识。书中以大量示例为主线,深入浅出地解析了并行编程的技术、方法和实践。对于想要学习并行编程的读者来说,这本书是一个宝贵的参考资料,能够帮助他们深入理解并行编程的原理和应用,并提供了丰富的示例来帮助读者巩固所学知识。对于已经有一定并行编程基础的读者来说,这本书也能够帮助他们进一步提高编程效率和性能优化。这本书内容丰富,讲解透彻,是一本对于并行编程方法与优化实践有兴趣的读者不容错过的好书。
并行编程方法与优化实践 电子书封面
读者评价
此书紧跟当前技术发展,内容较为专业,值得参考。美中不足的是同一系列拆分成三本书,使得理论部分与实践部分没能交叉对应起来。
作者写作能力太差了,很多细节没说清楚。同时也不够深入,很多数据都是一笔带过,怎么来的,怎么计算的,一笔带过。对初学者老说写的太少,对有经验的读者来说又写的太浅。
内容介绍
并行编程方法与优化实践介绍了并行编程的方法和优化实践,主要结合X86SSE与AVX、ARMNeon、OpenMP、CUDA和OpenCL等讲解了并行编程的技术、方法和最佳实践。第1章讲解X86SSE与AVX的矩阵实现;第2章讲解如何利用ARMNeon进行编程;第3章介绍OpenMP并行程序设计;第4章讲解基于GPU的CUDA和OpenCL程序设计;第5章讲解OpenACC的应用;第6~8章讲解线性代数和图形学在并行编程中的实践与应用,并给出大量示例。
目录
- 第1章 X86 SSE/AVX指令集
- 第2章 ARM NEON SIMD 指令优化
- 第3章 OpenMP程序设计
- 第4章 基于GPU的异构并行计算环境:CUDA与OpenCL
- 第5章 OpenACC
- 第6章 多核向量处理器架构及OpenCL程序映射
- 第7章 利用多种技术优化图像处理中的算法性能
- 第8章 利用多种技术优化线性代数中的算法性能
重复代码 消除重复代码,复用代码而不是重复代码 函数 分解过长的函数,尽量让每个函数的功能单一 封装函数,将具有独立功能的代码块提炼成一个函数,这样便于阅读和复用 类 分解过大的类 某个函数或者某个字段属于哪个类也是需要仔细斟酌的事情 全局变量 慎用全局变量,不要让全局变量满天飞,修改全局变量应该使用接口而不是直接修改 魔法数 以字面常量代替魔法数,如一个含有特殊含义的数值,应该用const常量来表示,这样既能解释说明其含义,也便于今后修改 多态 尽量避免使用switch等条件表达式,而应该使用多态 变量 有时为了便于阅读,需要引入解释性变量 以查询取代临时变量 取名 函数和变量取名的科学性、规范性,名字应准确表达函数或变量的功能,如RefreshXX()、SetXX()、GetXX() 新增一个名称(如变量名、函数名、类名),需要查询程序中是否已经使用过该名称,以避免冲突 模块化 将游戏功能模块化
我学编程是为了解决实际问题,既然让计算机来解决实际问题,那就要把实际问题抽象成计算机能计算的数学问题,怎么做呢? 1 首先不要急着去写代码,先搞清楚现实问题是什么,清楚的定义好,在机器的世界里没有含糊,你自己说都说不清楚就不要指望计算机去帮你解决了,例如我用python编写五子棋,主要就是两大块,一是弄一个棋盘出来, 第二大快就是判断输赢 2 把现实问题说清楚之后,把问题抽象成数学模型,例如绘制棋盘需要用到图形界面相关的库,把这个库学好,绘制好窗口和线条,然后在线条交汇处绘制一个透明色的圆形的控件。那么棋盘就绘制出来了,然后就是判断输赢了,怎么判断呢,再次细分,每个控件点击一次就会产生一个坐标,黑子和白子随着各自的控件被点击,会各自生成一个坐标的集合,于是是不是赢了的问题就等价于判断这些坐标在横线上,纵线上,还有正对角线上,和负对角线上是不是有5个连成线的问题,用遍历的方式,就可以了 以上是我用python编写五子棋的心得,还未完成,但是从一脸懵逼到理清了思路花了2天也是值得的,毕竟这对于我一个新手的python学习者来说已经是很大的安慰了。