目录

  • 一、写在前面
  • 二、摘要
    • A. 并行计算概述
      • 1. 什么是并行计算?
      • 2. 为什么使用并行计算?
      • 3. 谁在使用并行计算?
    • B. 概念和术语
      • 1. 冯诺依曼计算机体系结构
      • 2. 弗林分类法
      • 3. 通用并行计算术语
      • 4. 并行编程的潜在好处、限制和成本
    • C. 并行计算机内存架构
      • 1. 共享内存
      • 2. 分布式内存
      • 3. 混合分布式共享内存
    • D. 并行编程模型
      • 1. 共享内存模型
      • 2. 线程模型
      • 3. 分布式内存/消息传递模型
      • 4. 数据并行模型
      • 5. 混合模型
      • 6. SPMD 和 MPMP
    • E. 设计并行程序
      • 1. 自动并行 vs. 手动并行
      • 2. 理解问题和程序
      • 3. 分解
      • 4. 通讯
      • 5. 同步
      • 6. 数据依赖
      • 7. 负载均衡
      • 8. 粒度
      • 9. I/O
      • 10. 调试
      • 11. 性能分析和调优
    • F. 并行示例
      • 1. 数组处理
      • 2. 计算PI
      • 3. 简单热方程
      • 4. 一维波动方程
    • G. 参考资料和更多信息
  • 四、总结
  • 五、参考

一、写在前面

并行计算的入门文章非劳伦斯利弗莫尔国家实验室(LLNL)《Introduction to Parallel Computing Tutorial》[1]所属,于是本着学习的态度,笔者对其进行了翻译,以下是《Introduction to Parallel Computing Tutorial》的中文版,篇幅限制,本篇博客仅包含F. 并行示例G. 参考资料和更多信息部分,为《Introduction to Parallel Computing Tutorial》的第四部分,共四部分。

【高性能计算背景】《并行计算教程简介》翻译 - 中文 - 1 / 4
【高性能计算背景】《并行计算教程简介》翻译 - 中文 - 2 / 4
【高性能计算背景】《并行计算教程简介》翻译 - 中文 - 3 / 4
【高性能计算背景】《并行计算教程简介》翻译 - 中文 - 4 / 4


二、摘要

这是“利弗莫尔计算入门”研讨会的第一篇教程。本文旨在简要概述并行计算这一广泛而宽泛的主题,作为后续教程的导读。因此,它只涵盖并行计算的基本知识,面向刚刚熟悉该主题并计划参加本研讨会的一个或多个其他教程的人。它并不打算深入讨论并行编程,因为这将需要更多的时间。本教程首先讨论并行计算 - 它是什么以及如何使用,然后讨论与并行计算相关的概念和术语。然后探讨了并行内存体系结构和编程模型的主题。这些主题之后是一系列关于设计和运行并行程序的复杂问题的实际讨论。本教程最后给出了几个如何并行处理几个简单问题的示例。包括参考文献,以供进一步自学。

A. 并行计算概述

1. 什么是并行计算?

2. 为什么使用并行计算?

3. 谁在使用并行计算?


B. 概念和术语

1. 冯诺依曼计算机体系结构

2. 弗林分类法

3. 通用并行计算术语

4. 并行编程的潜在好处、限制和成本


C. 并行计算机内存架构

1. 共享内存

2. 分布式内存

3. 混合分布式共享内存


D. 并行编程模型

1. 共享内存模型

2. 线程模型

3. 分布式内存/消息传递模型

4. 数据并行模型

5. 混合模型

6. SPMD 和 MPMP


E. 设计并行程序

1. 自动并行 vs. 手动并行

2. 理解问题和程序

3. 分解

4. 通讯

5. 同步

6. 数据依赖

7. 负载均衡

8. 粒度

9. I/O

10. 调试

11. 性能分析和调优


F. 并行示例

1. 数组处理

  • 这个例子演示了二维数组元素的计算;函数在每个数组元素上求值。
  • 每个数组元素上的计算独立于其他数组元素。
  • 这个问题需要大量计算。
  • 串行程序按顺序一次计算一个元素。
  • 串行代码的形式可以是:
    do j = 1,ndo i = 1,na(i,j) = fcn(i,j)end doend do

二维数组

  • 要问的问题:

    • 这个问题可以并行化吗?
    • 如何划分问题?
    • 是否需要通信?
    • 是否存在任何数据依赖关系?
    • 是否需要同步?
    • 负载平衡会成为一个问题吗?

并行解决方案1

  • 元素的计算相互独立,带来理想的并行解决方案。

  • 数组元素均匀分布,以便每个进程拥有数组(子数组)的一部分。

    • 分配方案被选择以实现高效的内存访问;例如,以单位步长遍历子数组(步长为1)。单位步长可最大限度地提高缓存/内存使用率。
    • 由于希望能以单元步长遍历子数组,因此分配方案的选择一定程度上取决于编程语言。请参见块-周期分配图。
  • 数组元素的独立计算确保任务之间不需要通信或同步。

  • 由于工作量均匀分布在各个进程之间,因此不应该存在负载平衡问题。

  • 数组分发后,每个任务执行对应于它拥有的数据的循环部分。

  • 例如,显示了 Fortran(列优先)和 C(行优先)块分布:

列优先:

do j = mystart, myend do i = 1, n a(i,j) = fcn(i,j) end do
end do

行优先:

for i (i = mystart; i < myend; i++) { for j (j = 0; j < n; j++) { a(i,j) = fcn(i,j); }
}

一种可能的解决方案:

  • 作为单程序多数据(SPMD)模型实现——每个任务执行相同的程序。
  • 主进程初始化数组,将信息发送给工作进程并接收结果。
  • 工作进程接收信息,执行其共享的计算,并将结果发送给主进程。
  • 使用Fortran存储方案,使用数组的块分布。
  • 解决方案的伪代码:红色强调了并行化更改。

示例程序

  • MPI Array Program in C
  • MPI Array Program in Fortran

并行解决方案2:任务池

  • 之前的数组解决方案展示了静态负载均衡:

    • 每个任务拥有固定数量的工作去做
    • 对于速度更快或负载更轻的处理器来说,空闲时间可能很长——最慢的任务决定了总体性能。
  • 如果所有任务在相同的机器上执行相同的工作量,静态负载平衡通常不是主要考虑。

  • 如果您有负载平衡问题(某些任务的工作速度比其他任务快),您可以使用任务池方案。

任务池方案

  • 使用两个进程

主进程

  • 保存工作进程要执行的任务池
  • 当收到请求时向工作进程发送任务
  • 收集工作进程的结果

工作进程

  • 从主进程获取任务
  • 执行计算
  • 将结果发送给主进程

  • 工作进程在运行前不知道将处理数组的哪一部分,也不知道将执行多少任务。
  • 动态负载平衡发生在运行时:越快执行的任务获得更多工作去做。
  • 解决方案的伪代码:红色强调了并行化更改。

讨论

  • 在上面的任务池示例中,每个任务计算一个单独的数组元素作为作业。计算与通信的比率非常精细。
  • 细粒度解决方案会产生更多的通信开销,以减少任务空闲时间。
  • 一个更好的解决方案可能是为每个作业分配更多的工作。正确的工作量取决于问题本身。

2. 计算PI

  • PI 的值可以通过多种方式计算。考虑近似 PI 的蒙特卡洛方法:
  • 在边长为 2 r 2r 2r的正方形上内接一个半径为 r r r的圆
  • 圆的面积是 π r 2 π r^2 πr2,正方形的面积是 4 r 2 4r^2 4r2
  • 圆的面积与正方形的面积之比为:
    π r 2 / 4 r 2 π r^2 / 4r^2 πr2/4r2 = π / 4 π / 4 π/4
  • 如果您在正方形内随机生成N个点,则大约 ( N ∗ π ) / 4 (N*π)/ 4 (N∗π)/4个点 ( M ) 应该落在圆内。
    然后 π π π 的值近似为:
    ( N ∗ π ) / 4 = M (N*π) / 4 = M (N∗π)/4=M
    π / 4 = M / N π / 4 = M / N π/4=M/N
    π = 4 ∗ M / N π = 4 * M / N π=4∗M/N
    请注意,增加生成的点数会提高近似值。

串行计算PI

【高性能计算背景】《并行计算教程简介》翻译 - 中文 - 4 / 4相关推荐

  1. 【高性能计算背景】《并行计算教程简介》翻译 - 中文 - 3 / 4

    目录 一.写在前面 二.摘要 A. 并行计算概述 1. 什么是并行计算? 2. 为什么使用并行计算? 3. 谁在使用并行计算? B. 概念和术语 1. 冯诺依曼计算机体系结构 2. 弗林分类法 3. ...

  2. 并行计算教程简介 Introduction to Parallel Computing Tutorial

    并行计算简介 (对网上翻译文章再进行整理,可能存在些问题,请参考原贴) 1 摘要 最近项目需要实现程序的并行化,刚好借着翻译这篇帖子的机会,了解和熟悉并行计算的基本概念和程序设计.帖子的原文见这里,原 ...

  3. StudyTonight 中文系列教程【翻译完成】

    原文:StudyTonight 协议:CC BY-NC-SA 4.0 人最大的痛苦就是说一些自己都不相信的话.--燕京学堂鹿会 在线阅读 在线阅读(Gitee) ApacheCN 学习资源 目录 C/ ...

  4. [转]Django REST framework 简介与中文教程

    Django REST framework 简介与中文教程 简介 在序列化与反序列化时,虽然操作的数据不尽相同,但是执行的过程却是相似的,也就是说这部分代码是可以复用简化编写的. 在开发REST AP ...

  5. LAN8742 教程(2) 数据手册 中文翻译(2)

    LAN8742 教程(2) 数据手册 中文翻译(2) LAN8742 教程(1) 数据手册 中文翻译(1) LAN8742 教程(2) 数据手册 中文翻译(2) 文章目录 LAN8742 教程(2) ...

  6. LAN8742 教程(1) 数据手册 中文翻译

    LAN8742 教程(1) 数据手册 中文翻译 LAN8742 教程(1) LAN8742 教程(1) 数据手册 中文翻译 文章目录 LAN8742 教程(1) 数据手册 中文翻译 前言 1.0 介绍 ...

  7. GBDT(MART) 迭代决策树入门教程 | 简介 .

     GBDT(MART) 迭代决策树入门教程 | 简介 2013-12-23 16:26 2802人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: 数据挖掘相关(13) 作者同类文章X GB ...

  8. Git详细安装教程,翻译

    Git详细安装教程,翻译 Git 2.21.0 Setup 1. 解释: Additional icons 附加图标 ​ On the Desktop 在桌面上 Windows Explorer in ...

  9. prototype.js教程及prototype中文手册

    在线API文档:   http://www.prototypejs.org/api 1.4网页版: http://thinhunan.cnblogs.com/archive/2006/04/01/De ...

最新文章

  1. Silverlight+WCF 新手实例 象棋 WCF通讯跨域(十五)
  2. 每日一问一周汇总:第1期
  3. Java 字符串操作的总结1(转载)
  4. php重载父类属性,子类重写父类属性的问题。。。。求解惑
  5. Linux复制文件到usb设备中,使用shell脚本实现USB设备的加载与文件复制
  6. (10)FPGA与ASIC区别
  7. [转]在EntityFramework6中执行SQL语句
  8. 如果把钱存入余额宝时,所有人都在受益,那么谁在亏损呢?
  9. python打包exe有什么用_Python 打包exe
  10. gif 动态加载_搞笑GIF:这个游戏最大的成功就是失败!
  11. 人大副教授从细节上教你如何快速进行研究生早期的科研之路
  12. 省市级联mysql数据_全国省市区县三级级联数据
  13. cad查看_微信接收图纸dwg怎么打开?如何手机查看CAD图纸,三步免费教你
  14. php标题伪原创,火车头伪原创插件PHP版,如何在标题前面插入关键词?(悬赏1元) - 搜外SEO问答...
  15. ZEMAX 中三种设计优化方法
  16. 可爱猫python_可爱猫微信机器人框架最新版以及使用教程
  17. 国内Linux笔记天花板,不接受反驳!
  18. [转]将106键盘布局(日式键盘布局)改为101键盘布局(美式键盘布局)(
  19. 水星怎么设置网速最快_水星路由器怎么设置限速(分配合理网速)设置教程图解...
  20. msib450i gaming plus ac 开机vga长亮

热门文章

  1. 如何在execl中制作列与列错开的表格?
  2. Java 集成开发环境——Eclipse JEE的安装和配置Tomcat
  3. Java专题 Map,hashMap 多种遍历方式 总结+统计字符出现次数案例
  4. 基于STC8H的极简易示波器
  5. matlab车牌识别的外文文献翻译,汽车车牌识别系统(带外文翻译).doc
  6. 日本最新矢量图_日本地图的制作_都道府县_1都1道2府和43县(県)_日本shape
  7. 如何在VR场景中实时显示帧率
  8. 理想固网:IPPBX解决方案助力跨区企业资源整合
  9. 轻型在线办公—eyeOS
  10. 良心推荐:机器学习入门资料汇总及学习建议(2018版)