《多核与GPU编程:工具、方法及实践》----导读

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 多核架构出现在21世纪的第一个10年里,给并行计算带来了勃勃生机。新平台需要新方法来进行软件开发,其中一个新方法就是把工具和工作站网络时代的惯例同新兴软件平台(如CUDA)相结合。 为满足这种需求,本书将介绍目前主流的工具和技术,不仅是各自独立的工具和技术,更重要的是将它们相互结合。

_GPU_A
_GPU_

目 录
[第1章 概述
1.1 多核计算机时代 ](https://yq.aliyun.com/articles/90097)
1.2 并行计算机的分类
[1.3 现代计算机概览
1.3.1 Cell BE处理器
1.3.2 NVIDIA Kepler
1.3.3 AMD APU
1.3.4 从多核到众核:Tilera TILE-Gx8072和Intel Xeon Phi ](https://yq.aliyun.com/articles/90111)
1.4 性能指标
[1.5 并行程序性能的预测与测量
1.5.1 Amdahl定律
1.5.2 Gustafson-Barsis定律 ](https://yq.aliyun.com/articles/90128)
[第2章 多核和并行程序设计
2.1 引言 ](https://yq.aliyun.com/articles/90130)
2.2 PCAM方法学
[2.3 分解模式
2.3.1 任务并行
2.3.2 分而治之分解
2.3.3 几何分解
2.3.4 递归数据分解
2.3.5 流水线分解
2.3.6 基于事件的合作分解 ](https://yq.aliyun.com/articles/90179)
[2.4 程序结构模式
2.4.1 单程序多数据
2.4.2 多程序多数据
2.4.3 主/从
2.4.4 map-reduce
2.4.5 fork/join
2.4.6 循环并行 ](https://yq.aliyun.com/articles/90196)
2.5 匹配分解模式和程序结构模式
[第3章 共享内存编程:线程
3.1 引言 ](https://yq.aliyun.com/articles/90207)
[3.2 线程
3.2.1 线程的定义
3.2.2 线程的作用
3.2.3 线程的生成和初始化
3.2.4 在线程间共享数据 ](https://yq.aliyun.com/articles/90226)
3.3 设计考虑
3.4 信号量
[3.5 经典问题中的信号量
3.5.1 生产者–消费者
3.5.2 终止处理
3.5.3 理发师问题:引入公平性
3.5.4 读者–写者问题 ](https://yq.aliyun.com/articles/90270/)
[3.6 monitor
3.6.1 设计方法1:monitor内部的关键区
3.6.2 设计方法2:monitor控制关键区的入口 ](https://yq.aliyun.com/articles/90286)
[3.7 经典问题中的monitor
3.7.1 重新考虑生产者–消费者问题
3.7.2 重新考虑读者–写者问题 ](https://yq.aliyun.com/articles/90309)
[3.8 动态线程管理与静态线程管理
3.8.1 Qt线程池
3.8.2 线程池的创建和管理 ](https://yq.aliyun.com/articles/90346/)
3.9 调试多线程应用
3.10 高层次结构:无须显式利用线程的多线程编程
3.10.1 并发map
3.10.2 map-reduce
3.10.3 并发过滤
3.10.4 filter-reduce
3.10.5 案例研究:多线程存储
3.10.6 案例研究:多线程图像匹配
第4章 共享内存编程:OpenMP
4.1 引言
4.2 第一个OpenMP程序
4.3 变量作用域
4.3.1 定积分OpenMP版本V.0:人工划分
4.3.2 定积分OpenMP版本 V.1:无竞争条件的人工划分
4.3.3 定积分OpenMP V.2:基于锁的隐式划分
4.3.4 定积分OpenMP V.3:基于归约的隐式划分
4.3.5 变量作用域总结
4.4 循环级并行
4.4.1 数据依赖
4.4.2 嵌套循环
4.4.3 调度
4.5 任务并行
4.5.1 sections指令
4.5.2 task指令
4.6 同步结构
4.7 正确性与优化问题
4.7.1 线程安全
4.7.2 假共享
4.8 案例研究:OpenMP中的排序算法
4.8.1 自下而上归并排序算法的OpenMP实现
4.8.2 自上而下归并排序算法的OpenMP实现
4.8.3 性能评估
第5章 分布式内存编程
5.1 通信进程
5.2 MPI
5.3 核心概念
5.4 你的第一个MPI程序
5.5 程序体系结构
5.5.1 SPMD
5.5.2 MPMD
5.6 点对点通信
5.7 可选的点对点通信模式
5.8 非阻塞通信
5.9 点对点通信小结
5.10 错误报告与处理
5.11 集合通信简介
5.11.1 分发
5.11.2 收集
5.11.3 归约
5.11.4 多对多收集
5.11.5 多对多分发
5.11.6 多对多归约
5.11.7 全局同步
5.12 通信对象
5.12.1 派生数据类型
5.12.2 打包/解包
5.13 节点管理:通信器和组
5.13.1 创建组
5.13.2 建立内部通信器
5.14 单边通信
5.14.1 RMA通信函数
5.14.2 RMA同步函数
5.15 I/O注意事项
5.16 MPI多进程和多线程混合编程
5.17 时序和性能测量
5.18 调试和分析MPI程序
5.19 Boost.MPI库
5.19.1 阻塞和非阻塞通信
5.19.2?数据序列化
5.19.3?集合通信
5.20 案例研究:有限扩散聚合模型
5.21 案例研究:暴力加密破解
5.21.1 版本1:“基本型”MPI
5.21.2 版本2:MPI与OpenMP的结合
5.22 案例研究:主/从式并行模型的MPI实现
5.22.1 简单主/从式设置
5.22.2 多线程主/从式设置
第6章 GPU编程
6.1 GPU编程简介
6.2 CUDA编程模型:线程、线程块、线程网格
6.3 CUDA执行模型:流多处理器和warp
6.4 CUDA程序编译过程
6.5 构建CUDA项目
6.6 内存层次结构
6.6.1 本地内存/寄存器
6.6.2 共享内存
6.6.3 常量内存
6.6.4 texture和surface内存
6.7 优化技术
6.7.1 线程组织设计
6.7.2 kernel结构
6.7.3 共享内存访问
6.7.4 全局内存访问
6.7.5 page-locked与zero-copy内存
6.7.6 统一内存
6.7.7 异步执行和流
6.8 动态并行
6.9 CUDA程序的调试
6.10 CUDA程序剖析
6.11 CUDA和MPI
6.12 案例研究
6.12.1 分形集合计算
6.12.2 块加密算法
第7章 Thrust模板库
7.1 引言
7.2 使用Thrust的第一步
7.3 Thrust数据类型
7.4 Thrust算法
7.4.1 变换算法
7.4.2 排序与查询
7.4.3 归约
7.4.4 scan /前缀和
7.4.5 数据管理与处理
7.5 花式迭代器
7.6 交换设备后端
7.7 案例研究
7.7.1 蒙特卡洛积分
7.7.2 DNA序列比对
第8章 负载均衡
8.1 引言
8.2 动态负载均衡:Linda的遗赠
8.3 静态负载均衡:可分负载理论方法
8.3.1 建模开销
8.3.2 通信设置
8.3.3 分析
8.3.4 总结?:简短的文献综述
8.4 DLTlib:分割工作负载的库
8.5 案例研究
8.5.1 Mandelbrot集“电影”的混合计算:动态负载均衡案例研究
8.5.2 分布式块加密:静态负载均衡案例研究
在线资源
附录A 编译Qt程序
附录B 运行MPI程序:准备与配置步骤
附录C 测量时间
附录D Boost.MPI
附录E CUDA环境搭建
附录F DLTlib
术语表
参考文献

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
6月前
|
人工智能 弹性计算 PyTorch
【Hello AI】神行工具包(DeepGPU)-GPU计算服务增强工具集合
神行工具包(DeepGPU)是阿里云专门为GPU云服务器搭配的GPU计算服务增强工具集合,旨在帮助开发者在GPU云服务器上更快速地构建企业级服务能力
129608 3
|
Unix 异构计算 Windows
带你读《基于CUDA的GPU并行程序开发指南》之一:CPU并行编程概述
本书旨在帮助读者了解与基于CUDA的并行编程技术有关的基本概念,并掌握实用c语言进行GPU高性能编程的相关技巧。本书第一部分通过CPU多线程编程解释了并行计算,使得没有太多并行计算基础的读者也能毫无阻碍地进入CUDA天地;第二部分重点介绍了基于CUDA的GPU大规模并行程序的开发与实现,并通过大量的性能分析帮助读者理解如何开发一个好的GPU并行程序以及GPU架构对程序性能的影响;本书的第三部分介绍了一些常用的CUDA库。
|
2月前
|
存储 并行计算 算法
CUDA统一内存:简化GPU编程的内存管理
在GPU编程中,内存管理是关键挑战之一。NVIDIA CUDA 6.0引入了统一内存,简化了CPU与GPU之间的数据传输。统一内存允许在单个地址空间内分配可被两者访问的内存,自动迁移数据,从而简化内存管理、提高性能并增强代码可扩展性。本文将详细介绍统一内存的工作原理、优势及其使用方法,帮助开发者更高效地开发CUDA应用程序。
|
缓存 openCL 算法
关于实现Halcon算法加速的基础知识(2)(多核并行/GPU)
关于实现Halcon算法加速的基础知识(多核并行/GPU)
3246 0
关于实现Halcon算法加速的基础知识(2)(多核并行/GPU)
|
6月前
|
缓存 并行计算 算法
上帝视角看GPU(5):图形流水线里的不可编程单元
上帝视角看GPU(5):图形流水线里的不可编程单元
166 0
|
6月前
|
并行计算 API C++
GPU 硬件与 CUDA 程序开发工具
GPU 硬件与 CUDA 程序开发工具
131 0
|
6月前
|
并行计算 API 开发工具
【GPU】GPU 硬件与 CUDA 程序开发工具
【GPU】GPU 硬件与 CUDA 程序开发工具
105 0
|
6月前
|
机器学习/深度学习 并行计算 流计算
【GPU】GPU CUDA 编程的基本原理是什么?
【GPU】GPU CUDA 编程的基本原理是什么?
172 0
|
6月前
|
存储 人工智能 缓存
探索AIGC未来:CPU源码优化、多GPU编程与中国算力瓶颈与发展
近年来,AIGC的技术取得了长足的进步,其中最为重要的技术之一是基于源代码的CPU调优,可以有效地提高人工智能模型的训练速度和效率,从而加快了人工智能的应用进程。同时,多GPU编程技术也在不断发展,大大提高人工智能模型的计算能力,更好地满足实际应用的需求。 本文将分析AIGC的最新进展,深入探讨以上话题,以及中国算力产业的瓶颈和趋势。
|
机器学习/深度学习 程序员 异构计算
【深度学习工具】Python代码查看GPU资源使用情况
在训练神经网络模型时候,有时候我们想查看GPU资源的使用情况,如果使用Ctrl+Shift+Esc不太符合我们程序员的风格😅,如果可以使用代码查看GPU使用情况就比较Nice。话不多说,直接上代码。
761 0

热门文章

最新文章

下一篇
无影云桌面