Parallel 并行计算相关知识

发布于 2024-04-10 09:57:07 字数 1945 浏览 32 评论 0

并行计算(Parallel Computing)

并行计算(平行计算)是相对于串行计算来说的。

它是一种一次可执行多个指令的算法,目的是提高计算速度,及通过扩大问题求解规模,解决大型而复杂的计算问题。

所谓并行计算可分为时间上的并行(流水线技术)和空间上的并行(多个处理器并发的执行计算)。

基本思想是用多个处理器来协同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。

  • 用于多核处理器
  • 缓存算法

并行算法(parallel algorithms)

概念

  • 串行算法(serial algorithms)一般只有一种模型,即为随机存取机器模型(random access machine model)
  • 并行算法及并行空间,有许多其他模型。如:动态多线程模型(dynamic multithreading),适用于多核机器中,为内存共享的编程而设计,不适用于分布式编程
  • 衍生(spawn):衍生的代码可以跟着父程序同时执行
  • 同步(sync):等待所有子程序完成,才执行这条指令
  • 调度:把动态的、不断延伸的程序,映射到可用的处理器上
  • 多线程计算,并行指令流,它其实是个有向无环图(DAG)

并行时间

设:Tp:任意程序运算在 p 个处理器上的运行时间

T1;功(work),串行运行时间

T∞:关键路径长度,DAG 中最长路径

  • Tp ≥ T1/p
  • Tp ≥ T∞

T1/Tp = Θ(p) —— 线性加速

T1/Tp > Θ(p) —— 超级线性加速 (对于这个模型不可能,其他有可能通过类似缓存的机制实现)

P^ = T1/Tp —— 并行度,是能达到的最大速度,用功除以最短路径长度,是关键路径上可以并行完成的平均分量的功

调度算法

目的

调度的目的是:将计分配到 p 个处理器上,通常在实时操作系统上

贪心调度

在每一步做地尽可能多

  1. 第一种:完整步骤:p 个线程则用 p 个处理器
  2. 第二种:不完整步骤:多于 p 个线程运行 p 个线程;少于 p 个线程就全部线程运行

一个贪婪算法执行任意计算 G,若功为 T1,关键路径为 T∞,p 个处理器

Tp ≤ T1/p + T∞

  • T1/p:完整步骤
  • T∞:不完整步骤

贪心算法是线性加速度:P^ = T1/T∞

Cilk

Cilk —— 英特尔 Cilk 语言,多用于并行编程的语言

cilk int fib(int n) {
	if (n < 2) {
    	return n;
	}
	else {
    	int x, y;
    
    	x = spawn fib(n - 1);
    	y = spawn fib(n - 2);
    
    	sync;
    
    	return x + y;
	}
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

盗心人

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

13886483628

文章 0 评论 0

流年已逝

文章 0 评论 0

℡寂寞咖啡

文章 0 评论 0

笑看君怀她人

文章 0 评论 0

wkeithbarry

文章 0 评论 0

素手挽清风

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文