• 并行计算基础&编程模型与工具


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

    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课程

  • 相关阅读:
    NSInvocation的基本使用
    OC和JS代码的互调
    HTTPS的基本使用
    数据安全
    AFN框架
    部分文件的MIMEType
    linux中文件颜色,蓝色,白色等各自代表的含义
    CentOS下mysql常用命令
    mysql 完整备份和恢复
    mysqldump 导出提示Couldn't execute SELECT COLUMN_NAME...
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5251378.html
Copyright © 2020-2023  润新知