MPI学习笔记之并行程序概述

在学习CUDA和CAFFE后,我又准备把MPI看一下,主要是了解一下。主要是对并行计算的强烈性趣。。。。。额,兴趣。
一、前言
1、实现方式:
并行程序的两种实现方式:
任务并行:将任务分配带若干计算核上;
数据并行:将数据进行分割,然后由不同的计算核进行处理,每个核在规模相当的数据集上大致采用相同的操作。这不由使我想到了CAFFE中的对GPU的运用来实习并行训练的思路,就是将数据集进行分割,每个GPU并行处理各自对应的数据集,我认为是很占便宜的。
2、并行硬件和软件
硬件大概是单指令多数据流、多指令多数据流比较占优势。
多指令多数据流又分为分布式内存系统和共享内存系统。
分布式内存系统:
每个处理器由独立的内存,通过消息传递函数来通信。
共享式内存系统:
多个处理器能访问内存系统中的相同内存,通过共享内存进行通信。
MPI就是用来在分布式系统中为各处理器进行消息传递的API。
引:
各个核能够直接访问自己的内存,而运行在不同核之间的进程需要交换内存数据的时候,只能通过消息传递API来实现。消息传递的API至少要提供一个发送函数和接收函数。进程之间通过它们的序号(rank)进行识别。

3、并行程序的流程
a、任务或者数据划分,就是要识别出任务中可以进行并行执行的部分。
b、不同任务之间的通信;
c、聚合,将任务和通信进行集合,聚合成更大的任务;
d、分配,将聚合的任务分配到进程或线程中。

二、MPI简介
1、MPI是进程级别的,通过通信在进程之间进行消息传递。
2、编程模型复杂:
a、需要进行任务划分;
》》》》》》》》》》》》》》》》》》》》》》》》》》》
b、通信延迟和负载不均衡;通信延迟很好理解,负载不均衡是因为分布式的系统,每个处理的任务量不同?待进一步的解释
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
c、可靠性差,一个进程出错,整个程序崩溃。第一感觉就是这简直是MPI的命门。在分布式系统中某一个进程出错是很容易的,为MPI的命运担忧。。。
三、其他并行实现手段的介绍
1、pthread、boost::thread
多线程系统,比如C++的boost中的thread可以在多个平台移植。采用的是共享内存。
2、OpenMP
同样是线程级别的,采用共享内存,了解不多。
3、OpenCL
是为异构平台编写的框架,OpenCL提供了基于任务分割和数据分割的并行计算机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值