广义上讲,并行可以分为几类,1. 共享内存并行(明确的线程,比如Pthreads和Java threads);2.共享内存并行(任务/数据的并行,比如OpenMP); 2. 分布式并行(明确的通信,比如MPI, SHMEM, 和Global Arrays); 3. 分布式并行(特殊的全局访问,比如Co-Array Fortran, UPC)。
创新互联自2013年起,是专业互联网技术服务公司,拥有项目成都网站建设、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元新城做网站,已为上家服务,为新城各地企业和个人服务,联系电话:028-86922220具体说来,
Pthreads 是一个共享内存的编程模型,并行化通过并行调用函数来实现。一个并行函数体被多个线程同步的执行,这些线程都可以访问共享的全局数据。Pthreads是许多并行模型的底层实现。
Java是一个通用的编程语言,它通过线程的形式来支持并行化。并行Java程序运行在共享内存处理器上,它非常类似于Pthreads程序。Pthreads和Java仅仅在共享内存处理器上存在。
OpenMP也是共享内存模型,它的并行化是通过为循环和函数定义并行注释(parallel directives)来实现。OpenMP注释可以指出哪些循环部分可以并行执行,以及可以并行起来的函数。其它的一些注释用于指出针对某一进程的共享或私有的数据。编译器可以将OpenMP程序翻译成像Pthreads一样的程序,其中并行的循环体都会被翻译成并行函数的形式。OpenMP是一个工业标准的并行化库,被多种语言和平台所支持。OpenMP目前仅仅应用于共享内存处理器。
MPI是分布式内存模型,其线程需要明确的进行通信,这些通信基于MPI运行时库来发送和接受数据。MPI被广泛采纳,任何并行平台都能找到它。它的性能也已经被调优。尽管需要一定的编程才能实现,MPI由于其可移植性和性能表现,是目前最受欢迎的并行模式。
许多科学应用具有非常规则的内存访问模式,因此可以很容易的并行起来。三种典型的应用是,1. 不规则的表访问,涉及到许多并行数据库操作;2.不规则的动态访问,涉及到稀疏的数据结构,比如共轭梯度法求n阶稀疏矩阵的主特征值;3. 内存排序 in-memory sorting。
来源:
Evaluating the Imapct of Programming Language Features on the Performance of Parallel Applications on Cluster Architectures (by Konstantin Berlin, et al.)
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。