并行计算,并行计算是什么意思

03u百科知识网

什么是并行计算

并行计算是相对于串行计算来说的,所谓并行计算分为时间上的并行和空间上的并行。

时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。并行计算科学中主要研究的是空间上的并行问题。空间上的并行导致了两类并行机的产生,按照Flynn的说法分为:单指令流多数据流(SIMD)和多指令流多数据流(MIMD)。我们常用的串行机也叫做单指令流单数据流(SISD)。MIMD类的机器又可分为以下常见的五类: 并行向量处理机(PVP) 对称多处理机(SMP) 大规模并行处理机(MPP) 工作站机群(COW) 分布式共享存储处理机(DSM)。[编辑]访存模型 并行计算机有以下四种访存模型: 均匀访存模型(UMA) 非均匀访存模型(NUMA) 全高速缓存访存模型(COMA) 一致性高速缓存非均匀存储访问模型(CC-NUMA)和非远程存储访问模型(NORMA)。

并行计算(Parallel Computing)或称平行计算是相对于串行计算来说的。它是一种一次可执行多个指令的算法,目的是提高计算速度,及通过扩大问题求解规模,解决大型而复杂的计算问题。所谓并行计算可分为时间上的并行和空间上的并行。时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。

并行计算的解读

并行计算同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来协同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。并行计算系统既可以是专门设计的、含有多个处理器的超级计算机,也可以是以某种方式互连的若干台的独立计算机构成的集群。通过并行计算集群完成数据的处理,再将处理的结果返回给用户。

并行计算可分为时间上的并行和空间上的并行。

云计算、分布式计算、并行计算有什么区别与联系

整体来说都有奖任务分割、运算、组合,只是协同和处理的重点不同;

超级计算强调的是高并行计算能力,应用设备多是超级计算机如天河一号,是infiniband的高并行处理架构,实现总线级协同,一般采用计算能力更强的GPU而非CPU;

集群计算和分布式计算是相对于设备部署结构来说,这种计算相对超算来说,对于计算的并行处理及响应要求较低,需要实现的是网络环境下的协同,实现的效果受网络环境影响。

网格计算是集群计算和分布式计算与超级计算中间的产物,是在原来集群计算和分布式计算不能满足需求,而超算又过于难以实现的情况下,想通过增进网络带宽方式来实现通过集群计算和分布式计算能够达到接近超级计算的结果,国家网格节点之间的带宽都是T级别的,就可想而知对于基础资源的需求。

而云计算是更接近应用的资源整合,在协调资源整合应用的前提下,对于应用处理的并行处理要求跟低,只是一种松散耦合的方式,但强调将任务分解、处理、组合的过程,以充分利用现有资源。

并行计算在Quant中是如何应用的

Quant 中经常会用到很多机器学习和优化算法,很多算法比如说常用的蒙特卡洛模拟方法能够很自然地并行实现,如果采用并行计算则必然能够极大地提高计算效率,加快计算时间,更快地作出决策和发出交易指令,更好地抓住稍纵即逝的机会,这对进行高频交易尤其有用。另外如今的金融数据量也越来越大,适当地将数据分布到多个计算节点或者多个处理器上,能够降低对单台计算节点或者单个处理器的性能要求,也能降低对机器内存、网络带宽等其他资源的需求。

目前做 Quant 非常常用的是 Python 编程语言,如国外最流行的 Quantopian,国内的 JoinQuant,uqer 等都使用的是 Python 语言。用 Python 做并行计算的途径有很多,比如说使用标准库中的 [threading 模块](https://docs.python.org/2/library/threading.html)进行线程级别的并行,[multiprocessing 模块](https://docs.python.org/2/library/multiprocessing.html)进行进程级别的并行,[concurrent.futures 模块](https://docs.python.org/3/library/concurrent.futures.html)实现异步并行,使用 [IPython.parallel 模块](https://ipython.org/ipython-doc/3/parallel/index.html)进行多种方式的并行,使用 [mpi4py 包](https://pypi.org/project/mpi4py/)进行 MPI 消息传递并行计算,等等。如果可以使用 C/C++,Fortran 或者使用 cython 为 Python 编写扩展模块,还可以使用 OpenMP 并行。我的个人[简书专题](https://www.jianshu.com/c/5019bb7bada6)和 [CSDN 博客专栏](https://blog.csdn.net/column/details/26248.html)中有对用 Python 做并行计算的专门介绍并提供了大量的程序实例。有需要或者感兴趣的可以了解下。

文章版权声明:除非注明,否则均为03u百科知识网-你身边的百科知识大全原创文章,转载或复制请以超链接形式并注明出处。