在当前计算机应用中,对快速并行计算的需求是广泛的,归纳起来,主要有三种类型的应用需求:

  1. 计算密集(Computer-Intensive)型应用,如大型科学project计算与数值模拟;
  2. 数据密集(Data-Intensive)型应用,如数字图书馆、数据仓库、数据挖掘和计算可视化等;
  3. 网络密集(Network-Intensive)型应用,如协同工作、遥控和远程医疗诊断等。

并行编程模型主要有三种:适用于共享内存的多线程编程模型。适用于分布内存的消息传递编程模型,混合编程模型。

在计算机系统中。处理器永远都是訪问离自己近期的存储空间速度最快,比方L1 cache->L2->本地节点内存->远程节点内存/磁盘,而各层次的存储容量跟訪问速度恰恰相反。

并行计算中,并行算法的设计是决定性能的关键。有些问题天生具有良好的并行性。比方待处理数据集合能够被较好的去耦,而有些问题则须要复杂的公式推导和转换以适合并行计算。同一时候,还要避免计算过程中可能出现的瓶颈。任务划分要充分考虑负载均衡特别是动态负载均衡,“对等”的思想是维护负载均衡和保持可扩展性的关键之中的一个,即在设计时尽量避免使用Master/Slave和Client/Server的模式。

1.并行机的体系

并行机的发展从SIMD到MIMD。衍生除了四种经典的体系结构模式:SMP(Symmetric Shared-Memory Multiprocessor。比方经常使用的多核机。可扩展性较差。处理器数目8~16个),DSM(Distributed Shared-Memory。物理存储器分布于各个处理节点,而逻辑地址空间採用统一编址,因此属于共享存储。訪存时间受限于网络带宽)。MPP(Massive Parallel Processor。由成百上千台处理机组成的大规模系统,国家综合实力的象征。。)。机群系统(Cluster。互联的同构或异构的独立计算机的集合体,每一个节点都有自己的存储器、I/O、操作系统,能够作为单机使用,节点之间採用商品网络互联,灵活性较强)。

硬件:多核CPU(Intel, AMD), GPU(Nvidia), CellBe(Sony&Toshiba&IBM -> game,包括一个主处理单元和8个协处理单元)

概念:数据总线 地址总线 控制总线 (寄存器)位数

2.并行编程模型和工具

– MPI –

MPI(Message Passing Interface)是一种消息传递编程模型。服务于进程通信。它不特指某一个对它的实现,而是一种标准和规范的代表,它是一种库描写叙述,而不是一种语言,易于使用且具有高可移植性。说白了就是一些编程接口。

– OpenMP –

Open Multi-Processing是适用于共享内存多处理器体系结构的可移植并行编程模型。接口由SGI公司发起。

包括编译指导、执行函数库和环境变量三部分,具有串行等价性(不管使用一个还是多个线程执行一个程序,都带来同样的结果,更易于维护和理解)和增量并行性(处理器从一个串行程序開始,一块接着一块的寻找那些值得并行化的代码段)。

OpenMPI的执行模型採用Fork-Join形式。即主线程-从线程。减少了并行编程的难度和复杂度。

编译器指导语句,visio studio支持,使得OpenMP既能够被看做并行程序也能够被看做串行程序,或者在保持串行程序部分不变的情况下,用户能够方便地将串行程序改写成并行程序。

– MapReduce –

Google。PageRank倒排表索引的构建。

Map把输入Input分解成中间的Key/Value对,Reduce把Key/Value合成终于输出Output。

– Hadoop –

MapReduce的开源版本号。HFDS,NameNode(JobTracker),DataNode(TaskTracker),集群架构。

– CUDA –

Nvidia公司开发的GPU并行计算工具。

– CellBe –

CellBe的主要目标是将PlayStation2的处理器性能提高10倍,2006年IBM还推出了Cell刀片计算机系统。

參考文献:《并行计算机编程基础》& CUDA课程

$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('

    ').addClass('pre-numbering').hide();
    $(this).addClass('has-numbering').parent().append($numbering);
    for (i = 1; i ').text(i));
    };
    $numbering.fadeIn(1700);
    });
    });

并行计算基础&编程模型与工具的更多相关文章

  1. 老李分享: 并行计算基础&编程模型与工具 2

    2.并行编程模型和工具 – MPI – MPI(Message Passing Interface)是一种消息传递编程模型,服务于进程通信.它不特指某一个对它的实现,而是一种标准和规范的代表,它是一种 ...

  2. 老李分享: 并行计算基础&编程模型与工具 1

    老李分享: 并行计算基础&编程模型与工具   在当前计算机应用中,对高速并行计算的需求是广泛的,归纳起来,主要有三种类型的应用需求: 计算密集(Computer-Intensive)型应用,如 ...

  3. 老李分享: 并行计算基础&编程模型与工具

    在当前计算机应用中,对高速并行计算的需求是广泛的,归纳起来,主要有三种类型的应用需求: 计算密集(Computer-Intensive)型应用,如大型科学工程计算与数值模拟: 数据密集(Data-In ...

  4. Fork/Join编程模型

    1.一种并行计算的多线程编程模型 2.开始--任务分割--多线程异步执行---任务合并--阻塞等待合并结果.(分治算法) 3.work-stealing算法: 每个线程维护一个各自的双端的链表,有新任 ...

  5. 3、TensorFlow基础(一) 设计思想与编程模型

    1.TensorFlow系统架构 如图为TensorFlow的系统架构图: TensorFlow的系统架构图,自底向上分为设备层和网络层.数据操作层.图计算层.API层.应用层,其中设备层和网络层,数 ...

  6. Spark入门实战系列--3.Spark编程模型(上)--编程模型及SparkShell实战

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark编程模型 1.1 术语定义 l应用程序(Application): 基于Spar ...

  7. Spark入门实战系列--3.Spark编程模型(下)--IDEA搭建及实战

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 . 安装IntelliJ IDEA IDEA 全称 IntelliJ IDEA,是java语 ...

  8. Spark编程模型

    主要参考: Spark官方文档:http://spark.apache.org/docs/latest/programming-guide.html 炼数成金PPT:02Spark编程模型和解析 本文 ...

  9. C#异步编程の-------异步编程模型(APM)

    术语解释: APM               异步编程模型, Asynchronous Programming Model EAP                基于事件的异步编程模式, Event ...

随机推荐

  1. 在桌面Linux环境下开发图形界面程序的方案对比

    在Linux下开发GUI程序的方法有很多,比如Gnome桌面使用GTK+作为默认的图形界面库,KDE桌面使用Qt作为默认的图形界面库,wxWidgets则是另一个使用广泛的图形库,此外使用Java中的 ...

  2. C语言之可重入函数 && 不可重入函数

    可重入函数 在 实时系统的设计中,经常会出现多个任务调用同一个函数的情况.如果这个函数不幸被设计成为不可重入的函数的话,那么不同任务调用这个函数时可能修改其他任 务调用这个函数的数据,从而导致不可预料 ...

  3. display属性解析

    none 此元素不会被显示 block 此元素将显示为块级元素,此元素前后会带有换行符. inline 默认.此元素会被显示为内联元素,元素前后没有换行符. inline-block 行内块元素.(C ...

  4. jquery之checkbox

    //checkbox 数据回显 var publishRange=rowData.publishRange.split(","); for(var i = 0;i < pub ...

  5. 网页JavaScript1

    DOM的操作 windows对象操作 属性: opener,打开当前窗口的源窗口,首次启动 是null. dialogArgument,对话框的返回值 子对象: history , location ...

  6. MySQL 聚簇索引

    聚簇索引并不是一种单独的索引类型,而是一种数据存储方式.具体的细节依赖于其实现方式,但innoddb 的聚簇索引实际上在同一个结构中保存了B-Tree索引和数据行. 当表有聚簇索引时,它的数据实际上存 ...

  7. php如何实现上传图片文件,并替换

    首先建立两个文件: change.html 和 change.php change.html 文件的表单代码如下: <html><head> <title>chan ...

  8. 关于一个小bug的修正

    python初学者,非常喜欢虫师的文章. 练习时发现一个小bug,http://www.cnblogs.com/fnng/p/3782515.html 验证邮箱格式一题中,第三个x不允许有数字,但是测 ...

  9. ie6兼容性

    文本重复Bug 在IE6中,一些隐藏的元素(如注释.display:none;的元素)被包含在一个浮动元素里,就有可能引发文本重复bug.解决办法:给浮动元素添加display:inline;. 躲猫 ...

  10. nsfocus-笔试题

    1.描述sendmail原理及通讯机制 sendmail程序接受到待发邮件后,通过关键字@判断邮件的格式是否符合要求,匹配成功后提取邮件后缀域名信息并查询DNS数据库相关MX(邮件专用)记录,若有匹配 ...