OpenMP--parallel computing 并行计算

B站,OpenMP介绍

B站-Introduction to OpenMP OpenMP
1、OpenMp是并已被广泛接受的,用于共享内存并行系统的多处理器程序设计的一套指导性的编译处理方案。
2、OpenMP支持的编程语言包括C语言、C++和Fortran;
3、OpenMp提供了对并行算法的高层的抽象描述,程序员通过在源代码中加入专用的pragma来指明自己的意图,由此编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。当选择忽略这些pragma,或者编译器不支持OpenMp时,程序又可退化为通常的程序(一般为串行),代码仍然可以正常运作,只是不能利用多线程来加速程序执行。
OpenMP--parallel computing 并行计算_第1张图片
参见OpenMP使用
这是一篇比较好的OpenMP简介添加链接描述

为什么需要编写并行程序?

通常我们传统单核处理器上编写的程序无法利用多核处理器,我们需要使得程序充分利用处理器更快的运行程序,更加及时与逼真的模拟现实世界。为了达到这一目的,就需要软件开发工程师将串行程序改写为并行程序。

怎么样编写并行程序?

广泛采用的两种方式:任务并行和数据并行。

任务并行:是指将有待解决的问题需要执行的任务分配到各个核上完成。

数据并行:是指将有待解决的问题所需要处理的数据分配到各个核上完成,每个核在所分配的大致相当的数据集上执行相同操作。

这里我们举个例子来说明什么是任务并行,什么是数据并行?假如一个学校的高三总共有200个学生,有5个数学老师,分别是A、B、C、D、E老师,到期末考试的时候,数学试卷出了5道题目进行考试,在阅卷的时候,有两种方案:每个人负责一道题目进行打分;或者将学生分成5组,每人负责一组,即20个学生。在这两种方案中,数学老师充当计算机核的角色。

在第一种方案中,可以认为是任务并行的例子。有五个任务(题目)需要执行,即给批阅第一道题、批阅第二道题、……批阅第五道题。每个人执行的指令是不相同的。应该每一道题的内容不同。

而第二种方案中,可以认为数据并行的例子,“数据”就是学生的试卷,在不同的核(打分人)之间平分,每个核执行大致相同的指令。

有关并行计算的一个概述内容添加链接描述

你可能感兴趣的:(并行算法与OpenMP)