Loading

并行计算算法汇总

    这篇帖子是对常用的平行计算问题方法的汇总,俗话说API好学,但是算法难用。除了需要了解常用的并行计算API(MPI、Pthread、openMP),更重要是要学会如何将串行问题(serial programming)进行合理的拆分,从而编写出能够并行计算的程序。

    程序顺序执行、串行编写比较符合咱们的人脑逻辑,而程序并行执行需要考虑到不同process之间的通信、数据之间的依赖,种种原因导致并行程序编写是一件很麻烦的事情,但分布式计算、去中心化、多线程并发又十分的重要。所以了解并行程序编写思想还是蛮有价值的。

    这部分主要是对学习《CS542200 Parallel Programming 》以及《并行程序设计》的记录,对问题理解的深度以及准确性难免会缺失,所以尽量以书本为主。😬

    在parallel programming过程中,首先需要对处理数据进行分析,然后将问题进行分类处理。一般分为如下几类:

  1.  Embarrassingly Computations (易并行计算问题)
  2.  Divide-And-Conquer Computations (划分和分治计算问题)
  3.  Pipelined Computations (流水线计算问题)
  4.  Synchronous Computations (同步计算)

    针对数据处理的复杂程度以及数据之间的依赖关系,上述四种并行编程思想由简单到复杂、由特殊到一般。

    

posted @ 2021-12-09 13:11  aalanwyr  阅读(447)  评论(0编辑  收藏  举报