多核编程与并行计算
多核编程与并行计算
白马负金羁
数据挖掘 | 统计分析 | 图像处理 | 程序设计
展开
-
OpenMP并发编程快速入门
随着多核处理器的普及,并发编程也变得越来越流行。OpenMP是目前被广泛接受的,用于共享内存并行系统的多处理器程序设计的一套指导性的编译处理方案。程序员通过在源代码中加入专用的pragma来指明自己的意图,由此编译器可以自动将程序进行并行化。本文是OpenMP使用的一个初步介绍,期望能引领读者进入并发编程的世界原创 2016-09-06 13:52:53 · 6771 阅读 · 1 评论 -
OS X上基于OpenMP进行并行程序开发
OpenMP是目前被广泛接受的,用于共享内存并行系统的多处理器程序设计的一套指导性的编译处理方案。它提供了对并行算法的高层的抽象描述。本文主要来讨论在OS X系统上利用GCC来开发基于OpenMP的并发程序的基本方法原创 2016-08-31 20:31:11 · 3021 阅读 · 0 评论 -
Mac OS X下利用MPI进行并行计算
超级计算机通常都是有众多计算节点连接而成,而每个计算节点又包括一个至多个微处理器芯片。所以要想重复利用超算资源,还必须对程序本身进行针对性的并行优化。而且现在的PC处理器都是多核架构的,因此即使在个人电脑上也可以进行并行程序开发,MPI是并行程序开发的一个重要工具,本文就以Mac OS X系统为例来介绍MPI的配置方法,以及简单的并行计算编程原创 2016-10-09 21:03:06 · 16838 阅读 · 3 评论 -
MPI中的Bcast, Reduce和Gather使用举例
MPI是并行计算中最常被使用的一套协议,其中MPI_Gather,MPI_Bcast和MPI_Reduce更是最为常用的函数和方法。本文通过若干个具体的示例来讨论它们的具体的使用方法,以及一些初学者可能落入的陷阱原创 2016-10-18 15:33:58 · 11375 阅读 · 0 评论 -
Floyd-Warshall算法及其并行化实现(基于MPI)
Floyd-Warshall算法是用于寻找加权图中非固定起止点间最短路径的经典算法,它是基于动态规划思想设计的。Floyd算法也是并行计算中常常用来作为范例进行演示的一个算法。本文将主要讨论基于MPI的并行化Floyd算法实现并给出实例源码原创 2016-10-19 12:59:48 · 11290 阅读 · 7 评论 -
Win7下搭建JAVA并行开发环境MPJ Express(PART1)
MPJ Express是一个线程安全的Java版本的并行消息传递库,基于这个消息库,用户即可使用JAVA作为编程语言来开发并行程序。特别是随着高性能平台的普及,面对大数据挖掘或处理任务,抑或是并行计算或编程任务,MPJ Express势必会有更加重要而广泛的应用原创 2015-04-22 14:51:43 · 3322 阅读 · 0 评论 -
Win7下搭建JAVA并行开发环境MPJ Express(PART2)
如果我们已经成功地在Windows中搭建了基于MPJ Express的并行开发环境,那么我们就可以开始进行并行编程了。本部分我们将在Eclipse中编写一个简单的程序来说明基于MPJ Express进行并行开发的基本方法原创 2015-04-22 14:59:46 · 2991 阅读 · 0 评论 -
Win7下搭建JAVA并行开发环境MPJ Express(PART3)
本文是系列文章的最后一篇。当我们搭建基于MPJ Express的并行开发环境时,出现这样或那样的问题是在所难免的,这一部分我们就来讨论一下其中可能会遇到的问题。 并进一步探讨了使用MPJ Express进行并行计算的方法和应该注意的地方原创 2015-04-22 15:12:27 · 2952 阅读 · 2 评论 -
矩阵乘法的并行化算法讨论
矩阵乘法是线性代数里面会讲到的一种非常基础、也十分普遍的计算规则。另一方面,矩阵乘法同时也是并行计算领域常常被用来作为范例的一个话题。它的特点是首先计算量可能相当大,适合利用并行实现来提高效率。其次,它所使用的各种数据之间(矩阵中的元素)没有相互依赖性,可以充分使用并行处理的计算资源原创 2015-09-26 13:28:14 · 31414 阅读 · 10 评论 -
数组的前缀和(Prefix Sum)问题及其并行算法
前缀和(Prefix Sum)问题是在讨论并行优化算法时常常被用来作为示例的一个典型问题。对于一个输入的数组,我们所得之结果是一个等长的数组,而结果数组中的每个元素(假设是第x个元素)都是原数组中对应位置的前x项和,这就是所谓的前缀和问题(时也称累加和cumulative sum)原创 2009-10-29 17:01:00 · 17894 阅读 · 30 评论 -
Flynn分类法与Schwartz的并行机类别
Michael J. Flynn是美国斯坦福大学的计算机教授,1972年他提出了著名的费林分类法(Flynn's taxonomy,或Flynn’s classifications)。Flynn's taxonomy是一种经典的计算机体系结构分类方式。Flynn根据指令流、数据流的多倍性特征把计算机系统(或体系结构)分成了四类原创 2009-10-29 17:02:00 · 4475 阅读 · 24 评论 -
PRAM模型与Amdahl定律
阿姆达尔定律(Amdahl’s Law)是一条用以阐释并行计算所能达到之基本极限的法则,it is formulated by 美国计算机科学家 Gene Amdahl in 1967。或者说,Amdahl’s Law是一种给定问题规模的前提下,用以预测(或估计)最大可达的加速因子(或称加速比)的方法原创 2020-03-24 08:32:09 · 5988 阅读 · 8 评论 -
Gustafson定律
Gustafson定律由美国计算机科学家John Gustafson及其合作者于1988年提出。Gustafson定律描述了增加处理器数目的同时相应的增大问题规模对加速比的影响,它是并行计算及HPC领域的一个基本定律原创 2010-03-11 23:59:00 · 6201 阅读 · 10 评论 -
Brent原理(Brent’s Principle)
在将一个问题的内在并行性(inherent parallelism)转化为一个有效的并行算法时,Brent原理(Brent’s Principle)为这种并行化提供了一个普遍的模式。这个结论最初由Richard P. Brent于1974年给出原创 2010-03-21 20:49:00 · 11988 阅读 · 16 评论 -
并行计算中的BSP模型
所谓计算模型实际上就是硬件和软件之间的一种桥梁,我们可以借助它来设计分析算法,在其上髙级语言能被有效地编译且能够用硬件来实现。在串行计算时,冯•诺依曼机就是一个理想的串行计算模型。BSP(Bulk Synchronous Parallel)模型,字面的含义是 “大”同步模型,它最早由Leslie和Valiant 在 1990 年提出原创 2016-04-21 14:41:06 · 10168 阅读 · 5 评论