并行程序设计导论 Peter S. Pacheco
文章平均质量分 92
高性能计算工程师
做一个极客!
展开
-
第1章 为什么要并行计算 摘录
1.3 为什么需要编写并行程序大多数位传统单核系统编写的程序无法利用多核处理器。1.4 如何编写并行程序有两种广泛采用的方法:任务并行和数据并行。任务并行是指:将待解决问题所需要执行的各个任务分配到各个核上执行。数据并行是指:将待解决问题所需要处理的数据分配到各个核,每个核在分配的数据集上执行大致相似的操作。在计算全局求总和的例子中:协调过程包括通信:一个或多个核将...原创 2021-10-08 10:16:49 · 396 阅读 · 0 评论 -
第2章 并行硬件与软件 摘录
2.1 背景知识2.1.1 冯-诺伊曼结构”经典“的 冯-诺伊曼结构包括主存、中央处理单元(Central Processing Unit, CPU)处理器或核,以及主存和CPU之间的互连结构。主存中许多单元,每个区域都可以储存指令和数据。每个区域都有一个地址,可以通过这个地址来访问相应的区域及区域中存储的数据和指令。中央处理单元分为控制单元和算术逻辑单元(Arithmetic Logic Unit, ALU)。控制单元负责决定应该执行程序中那些指令,而ALU负责执行指令。CPU中的数据和程原创 2021-10-09 16:21:41 · 1184 阅读 · 0 评论 -
第3章 MPI 分布式内存编程 摘录
在消息传递程序中,运行在一个核-内存的程序通常称为进程。两个进程可以通过调用函数来进行通信:一个进程调用发送函数,另一个调用接收函数。我们要使用消息传递的实现称为消息传递接口(Message - Passing Interface, MPI)。MPI定义了一个可以被程序调用的函数库。涉及多于两个进程的‘全局’通信函数,这些函数称为集合通信。涉及编写消息传递程序的基本问题,如数据的分割核分布式内存系统的I/O。不让每个进程都进行I/O,而是指派其中一个进程来负责输出,而其他进程向它发送要打印的原创 2021-10-21 20:36:28 · 1649 阅读 · 0 评论 -
第4章 Pthreads 进行共享内存编程 摘录
从程序员角度看,共享内存系统的任意处理器核都能访问所有的内存区域。如果不同的处理器核尝试更新内存区域上同一个位置的数据,那么会导致共享区域的内容无法预测。我们把对共享内存预期进行更新的代码段称为临界区(critical section)。4.1 进程、线程和Pthreads大体上,将线程看成是轻量级进程。进程是正在运行(或挂起)的程序的一个实例,除了可执行代码外,它还包括: 栈段 堆段 系统为进程分配的资源描述符,如文件描述符等 ...原创 2021-11-16 19:39:25 · 1481 阅读 · 0 评论 -
第5章 用OpenMP 进行共享内存编程 摘录
OpenMP中的“MP”代表多处理,是一个与共享内存并行编程同义的术语。OpenMP:在系统中的每个线程或进程都有可能访问所有的内存区域。Pthreads要求程序员显式地明确每个线程的行为。相反,OpenMP有时允许程序员只需要简单地声明一块代码应该并行执行,而由编译器和运行时系统决定哪个线程具体执行哪个任务。Pthreads与MPI一样,是一个能够被链接到C程序的函数库,因此只要系统有Pthreads库,Pthreads程序就能够被任意C编译器使用。相反,OpenMP要求编译器支持某些操.原创 2021-11-25 17:06:17 · 1817 阅读 · 0 评论