实现并行运算的方法汇总
1、实现的手段
1.1 MPI
MPI实现并行是进程级;采用的是分布式内存系统,显式(数据分配方式)实现并行执行,通过通信在进程之间进行消息传递,可扩展性好。MPI虽适合于各种机器,但它的编程模型复杂:
需要分析及划分应用程序问题,并将问题映射到分布式进程集合;
需要解决通信延迟大和负载不平衡两个主要问题;
调试MPI程序麻烦;
MPI程序可靠性差,一个进程出问题,整个程序将错误;
1.2 Pthreads
Pthreads实现并行是线程级;采用的是共享内存系统,只有在POSIX的系统(linux、mac OS X、Solaris、HPUX等)上才有效。它是一个可以连接到C程序中的库,目前标准的C++共享内存线程库还在开发中,也许在将来在C++程序中,使用这个库更加方便。
1.3 OpenMP
OpenMP是线程级(并行粒度);采用的是共享内存系统,隐式(数据分配方式)实现并行执行;可扩展性差;正因为采用共享内存分布系统,意味着它只适应于SMP(Symmetric Multi-Processing 对称多处理结构),DSM(Distributed Shared Memory 共享内存分布系统)机器,不适合于集群。
1.1 OpenCL
全称Open Computing Language,开放运算语言。是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。OpenCL由一门用于编写kernels (在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成。OpenCL提供了基于任务分割和数据分割的并行计算机制。OpenCL类似于另外两个开放的工业标准OpenGL和OpenAL,这两个标准分别用于三维图形和计算机音频方面。
1.5 GPU
GPU是专门为执行复杂的数学和集合计算而设计的,一个GPU内有许多流处理簇(stream Multiprocessor)SM,他们就类似于CPU的核。这些SM与共享(一级缓存)连接在一起,然后又与相当于SM间互联开关的二级缓存相连。类似于这种设计,都是为计算图形渲染所必须的。
1.6 Hadoop
是谷歌公司MapReduce框架的一个开源版本。它针对的是linux平台。其概念是你取来一个大数据集,然后将其切割或映射(map)成很多小的数据块。然而,并不是将数据发送到各个节点,取而代之的是数据集通过并行文件系统已经被划分给上百或者上千个节点。因此,归约(Reduce)步骤就是把程序发送到已经包含数据的节点上,然后输出结果写入本地节点并保存在那里。
分享标题:实现并行运算的方法汇总
文章URL:http://lswzjz.com/article/jidiee.html