集群系统:
利用网络将计算机按照某种结构连接起来,在并行计算环境下支持统一调度的并行系统。
多核技术:
一个处理器中集成两个或更多完整的计算引擎(核),使用多线程充分执行多个执行内核。
并行编程模型(针对SMP?):
数据并行,消息传递,共享存储三种。
消息传递模型:
底层为一组处理器,每个处理器有自己的内存且只能访问本地的指令和数据(MPI为标准例子)。
MPI的优缺点:
MPI可移植到分布式和共享存储系统结构上,允许静态任务调度,使用于粗粒度的并行。
MPI对于细粒度并行会引发大量通信,动态负载平衡困难,并行改进需要大量修改原有串行代码,调试难度大。
共享存储:
底层硬件为一系列处理器,所有处理器访问同一个共享存储器(OpenMP为标准例子)。
MPI和OpenMP混合编程模型:
MPI分解问题,划分任务,使得各部分(每部分分配到一个多核节点上)之间的通信较少,OpenMP将每个节点上的部分进一步分解,分配到不同核心上,由多个线程通过共享存储通信来并行执行。
混合编程模型优分析:
优点:
1:有效改善MPI代码可扩展性,实现更好的并行粒度(MPI仅负责通信,实行粗粒度并行,OpenMP才是真正实现节点内部的并行,不存在负载均衡问题)
2:更少的通信开销(减少进程数,让线程完成任务,减少进程间通信)
3:空闲CPU可以被派生的线程利用(某个线程可以通过派生线程抢占其他线程空闲的CPU)
4:带宽没有影响,延迟减少了(发送的消息减少,每个消息长度增加)
缺点:
1:纯MPI应用汇导致CPU无法饱和结点间的带宽
2:增加系统开销(如线程fork/join)
以上总结纯属参考,总结来自张军、万剑怡的《多核集群系统上的混合编程模型》,介绍一下混合编程模型的大概,不代表个人观点。