精华内容
下载资源
问答
  • 并行计算有哪些实现方式

    千次阅读 2020-05-20 13:24:16
    转载至并行计算简介 并行计算 Intel指令集中MMX,SSE,SSE2,SSE3和SSE4指的是什么? MMX(Multi Media eXtension,多媒体扩展指令集)是一些整数并行运算指令。...并行计算有哪些实现方式? 单指令多数据流SIMD、

    转载至并行计算简介

    并行计算

    Intel指令集中MMX,SSE,SSE2,SSE3和SSE4指的是什么?
    MMX(Multi Media eXtension,多媒体扩展指令集)是一些整数并行运算指令。

    SSE(Streaming SIMD Extensions,单指令多数据流扩展)是一系列浮点并行运算指令。

    SIMD,单指令多数据流,是指用一条指令执行多个计算,比如图像像素一般是BYTE占8位,而计算机中总线是64位,所以理论上可以同时进行8个像素的运算。

    并行计算有哪些实现方式?

    单指令多数据流SIMD、对称多处理机SMP、大规模并行处理机MPP、工作站机群COW、分布共享存储DSM多处理机。

    1什么是并行计算

    串行计算: 传统的软件通常被设计成为串行计算模式,具有如下特点:

    一个问题被分解成为一系列离散的指令;
    这些指令被顺次执行;
    所有指令均在一个处理器上被执行;
    在任何时刻,最多只有一个指令能够被执行。
    在这里插入图片描述
    例如
    在这里插入图片描述
    并行计算: 简单来讲,并行计算就是同时使用多个计算资源来解决一个计算问题:

    一个问题被分解成为一系列可以并发执行的离散部分;
    每个部分可以进一步被分解成为一系列离散指令;
    来自每个部分的指令可以在不同的处理器上被同时执行;
    需要一个总体的控制/协作机制来负责对不同部分的执行情况进行调度。
    在这里插入图片描述
    例如,
    在这里插入图片描述
    这里的 计算问题 需要具有如下特点:

    能够被分解成为并发执行离散片段;
    不同的离散片段能够被在任意时刻执行;
    采用多个计算资源的花费时间要小于采用单个计算资源所花费的时间。
    这里的 计算资源 通常包括:

    具有多处理器/多核(multiple processors/cores)的计算机;
    任意数量的被连接在一起的计算机。’

    2概念和术语

    2.1 冯诺依曼体系结构

    以匈牙利数学家约翰·冯诺依曼命名的这一计算机体系结构,出现在他1945年发表的一篇论文中。这也通常被称为“存储程序计算机”——程序指令和数据都被保存在存储器中,这与早期通过“硬接线”编程的计算机不同。从此以后,所有的计算机走遵从这一基本架构:
    在这里插入图片描述

    • 四个组成部分:1)内存;2)控制器;3)处理器;4)输入输出。
    • 读写操作:支持随机存储的内存用来同时保存程序指令和数据:1)程序指令用来指导计算机操作;2)数据是程序用来操作的对象。
    • 控制器:从内存中读取指令或者数据,对这些指令进行解码并且顺序执行这些指令。
    • 处理器:提供基本的算术和逻辑操作。
    • 输入输出设备:是人机交互的接口。

    那么冯诺依曼体系结构和并行计算有什么关系呢?答案是:并行计算机仍然遵从这一基本架构,只是处理单元多于一个而已,其它的基本架构完全保持不变。

    2.2 弗林金典分类

    有不同的方法对并行计算机进行分类(具体例子可参见并行计算分类)。

    一种被广泛采用的分类被称为弗林经典分类,诞生于1966年。弗林分类法从指令流和数据流两个维度区分多处理器计算机体系结构。每个维度有且仅有两个状态:单个或者多个。

    下面个矩阵定义了弗林分类的四个可能状态:
    在这里插入图片描述
    单指令单数据(SISD): SISD是标准意义上的串行机,具有如下特点:1)单指令:在每一个时钟周期内,CPU只能执行一个指令流;2)单数据:在每一个时钟周期内,输入设备只能输入一个数据流;3)执行结果是确定的。这是最古老的一种计算机类型。
    在这里插入图片描述
    单指令多数据(SIMD): SIMD属于一种类型的并行计算机,具有如下特点:1)单指令:所有处理单元在任何一个时钟周期内都执行同一条指令;2)多数据:每个处理单元可以处理不同的数据元素;3)非常适合于处理高度有序的任务,例如图形/图像处理;4)同步(锁步)及确定性执行;5)两个主要类型:处理器阵列和矢量管道。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    **多指令单数据(MISD):**MISD属于一种类型的并行计算机,具有如下特点:1)多指令:不同的处理单元可以独立地执行不同的指令流;2)单数据:不同的处理单元接收的是同一单数据流。这种架构理论上是有的,但是工业实践中这种机型非常少。
    在这里插入图片描述
    在这里插入图片描述
    多指令多数据(MIMD): MIMD属于最常见的一种类型的并行计算机,具有如下特点:1)多指令:不同的处理器可以在同一时刻处理不同的指令流;2)多数据:不同的处理器可以在同一时刻处理不同的数据;3)执行可以是同步的,也可以是异步的,可以是确定性的,也可以是不确定性的。这是目前主流的计算机架构类型,目前的超级计算机、并行计算机集群系统,网格,多处理器计算机,多核计算机等都属于这种类型。值得注意的是,许多MIMD类型的架构中实际也可能包括SIMD的子架构。
    在这里插入图片描述
    在这里插入图片描述

    3.3 一些常见并行计算术语

    和其它一些领域一样,并行计算也有自己的“术语”。下面列出了与并行计算相关联的一些常用术语,其中大部分术语我们在后面还会进行更详细的讨论。

    结点(Node): 也就是一个独立的“计算机单元”。通常由多个CPU处理器/处理内核,内存,网络接口等组成。结点联网在一起以构成超级计算机。
    中央处理器/套接字/处理器/核(CPU / Socket / Processor / Core): 这些术语也取决于我们讨论的语境。在过去,中央处理器通常是计算机中的一个单个执行单元。之后多处理器被植入到一个结点中。接着处理器又被设计成为多核,每个核成为一个独立的处理单元。具有多核的中央处理器有时候又被称为“套接字”——实际上也没有统一标准。所以目前来讲,我们称一个结点上具有多个中央处理器,每个中央处理器上又具有多个内核。
    在这里插入图片描述
    任务(Task): 任务通常是指一个逻辑上离散的计算工作部分。一个任务通常是一段程序或者一段类似于程序的指令集合,可以由一个处理器进行处理。一个并行程序通常由多个任务构成,并且可以运行在多个处理器上。
    流水线(Pipelining): 可以将任务分解成为不同的步骤,并且由不同的处理单元完成,里面有输入流通过。这非常类似于一个装配线,属于一种类型的并行计算。
    共享内存(Shared Memory): 从严格的硬件角度来讲,共享内存描述了一种计算机架构,其中所有的处理器都可以对共同的物理内存进行直接存取(通常是通过总线)。从编程的角度来讲,共享内存描述了一种模型,其中所有的并行任务都具有同一内存形态,并且都可以直接对同一内存区域进行直接定位和存取,而无论该物理内存实际上在哪里(也许在千里之外的另外一个计算机上?)。
    对称多处理器(Symmetric Multi-Processor (SMP)): 属于一种共享内存的硬件架构,并且不同的处理器对内存以及其它资源都具有同等的访问权限(个人理解,就是不同处理器在角色上没有任何区别)。
    分布式内存(Distributed Memory): 在硬件中,表示基于网络的内存存取方式;在编程模型中,表示任务仅仅能够从逻辑上“看到”本机上的内存,但是在其它任务执行的时候,必须通过通讯才能对其它任务所运行的机器上的内存进行存取。
    通讯(communications): 并行任务通常需要数据交换。实现数据交换的方式有多种,例如通过共享内存或者通过网络。但是通常意义上,数据交换指的就是通讯,而无论其实现方式。
    同步(Synchronization): 指的是并行任务之间的实时协调,通常伴随着通讯(communication)。同步通常由在程序中设立同步点来实现,也就是说,在其它任务没有执行到这一同步点的时候,某一任务不能进一步执行后面的指令。同步通常涉及到需要等待其它任务的完成,因此有时候会增加并行程序的执行时间。
    粒度(Granularity): 在并行计算中,粒度定量地描述了计算与通讯的比率。粗粒度表示在通讯过程中需要做大量的计算性工作;细粒度则表示在通讯过程中需要做的计算性工作并不多。
    加速比(Observed Speedup): 这是检测并行计算性能的最简单并且最被广泛使用的度量策略,其定义如下:串行计算的时钟周期数并行计算的时钟周期数。
    并行开销(Parallel Overhead): 指的是相对于做实际计算,做协调并行任务所需要花费的时间总数。影响并行开销的因素主要包括:1)任务启动时间;2)同步;3)数据通讯;4)由并行语言,链接库,操作系统等因素而导致的软件开销;5)任务终止时间。
    大规模并行(Massive Parallel): 指那些包含并行系统的硬件——拥有很多的处理元件。这里的“很多”可能会随着硬件条件的进步而不断增加,但目前,最大的并行系统所拥有的处理元件高达上百万件。
    尴尬并行(Embarrassingly Parallel): 指的是同时解决很多类似而又独立的任务,其中任务之间几乎没有需要协调的地方。
    可扩展性(Scalability): 指的是并行系统(包括软件和硬件)通过添加更多资源来成比例增加并行速度的能力。影响可扩展性的因素主要包括:1)硬件,尤其是内存-处理器带宽以及网络通讯的质量和速度;2)应用算法;3)相对并行开销;4)具体应用的特征

    展开全文
  • 并行计算模型有哪些

    万次阅读 2021-04-22 00:31:44
    并行计算模型通常指从并行算法的设计和分析出发,将各种并行计算机(至少是某一类并行计算机)的基本特征抽象出来,形成一个抽象的计算模型。 从更广的意义上说,并行计算模型为并行计算提供了硬件和软件界面,在该...

    写在前面

    本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

    本专栏目录结构和文献引用请见100个问题搞定大数据理论体系

    解答

    并行计算模型通常指从并行算法的设计和分析出发,将各种并行计算机(至少是某一类并行计算机)的基本特征抽象出来,形成一个抽象的计算模型。
    
    从更广的意义上说,并行计算模型为并行计算提供了硬件和软件界面,在该界面的约定下,并行系统硬件设计者和软件设计者可以开发对并行性的支持机制,从而提高系统的性能。
    
    常见的并行计算模型有:BSP 模型,PRAM 模型,LogP模型,C3 模型,BDM 模型
    

    在这里插入图片描述

    补充

    为什么需要并行计算模型?

    Spark、 Hadoop是迭代模式,只适合一般的计算,在机器学习等计算量非常大的领域,传统的迭代模型不再适用。并行计算模型就是为了解决一些特定场景下的计算量问题。

    BSP模型

    (Bulk Synchronous Parallel,整体同步并行计算模型)是一种并行计算模型,由英国计算机科学家 Viliant 在20世纪80年代提出。

    Google发布的一篇论文(Pregel:A System for Large-scale Graph Processing)使得这一概念被更多人所认识。

    和 Mapreduce-样, Google并没有开源 Pregel, Apache按 Pregel 的思想提供了类似的框架Hama。

    BSP模型基本原理

    BSP模型是一种异步MIMD-DM模型(DM-Distributed Memory,SM–Shared Memory), 其支持消息传递系统、块内异步并行、块间配式同步。

    该模型基于一个 Master协调,所有的 Worker 同步(lock-step)执行,数据从输入的队列中读取。

    BSP计算模型不仅是一种体系结构模型,也是设计并行程序的一种方法。

    BSP程序的设计准则是整体同步(Bulk Synchrony),其独特之处在于超步(Super Step)概念的引入。

    一个BSP程序同时具有水平和垂直两个方向的结构。从垂直上看,一个BSP程序由一系列串行的超步(Super Step)组成,如图所示,这种结构类似于一个串行程序结构。

    BSP超步

    从水平上看,在一个超步中,所有的进程并行执行局部计算。一个超步可分为三个阶段,如图所示。

    BSP超步三个阶段

    1. 本地计算阶段,每台处理器只对存储在本地内存中的数据进行本地计算。
    2. 全局通信阶段,对任何非本地数据进行操作。
    3. 栅栏同步阶段,等待所有通信行为结束。

    BSP并行计算模型可以用p、s、g、i4个参数进行描述

    1. p为处理器的数目(带有存储器)。
    2. s为处理器的计算速度。
    3. g为每秒本地计算操作的数目/通信网络每秒传送的字节数,称之为选路器昋吐率,视为带宽因子。
    4. i为全局的同步时间开销,称之为全局同步之间的时间间隔(Barrier Synchronization Time)

    假设有p台处理器同时传送h字节信息,则gh就是通信的开销。同步和通信的开销都规格化为处理器的指定条数。

    BSP模型的特点

    1. BSP模型将计算划分为一个一个的超步(Super Step),有效避免了死锁。
    2. 它将处理器和路由器分开,路由器仅仅完成点到点的消息传递,不提供组合、复制和广播等功能,这样做既掩盖了具体的互连网络拓扑,又简化了通信协议。
    3. 障碍同步是以硬件实现的全局同步,是可控的粗粒度级的,从而提供了执行紧耦合同步式并行算法的有效方式,而程序员并无过多的负担。
    4. 在分析BSP模型的性能时,假定局部操作可以在一个时间步内完成,而在每一个超步中, 一台处理器最多发送或接收h条消息(称为h-relation)
    5. 为PRAM模型设计的算法都可以采用在每台BSP处理器上模拟一些PRAM处理器的方法来实现。

    BSP模型的评价

    1. 在并行计算时, Viliant试图为软件和硬件之间架起一座类似冯・诺伊曼机的桥梁,BSP模型可以起到这样的作用。正因如此,BSP模型也被称为桥模型。
    2. 一般而言,分布式存储的MIMD模型的可编程性比较差,但在BSP模型中,如果计算和通信可以适当平衡,则它在可编程性方面将呈现出更大的优势。
    3. 在BSP模型中直接实现了一些重要的算法(如矩阵乘、并行前序运算、FFT和排序等),均避免了自动存储管理的额外开销。
    4. BSP模型可以有效地在超立方体网络和光交叉开关互连技术上实现,显示出该模型与特定的技术实现无关,只需路由器具有一定的通信吞吐率。
    5. 在BSP模型中,“超步”的长度必须能够充分地适应任意的h-relation。
    6. 在BSP模型中,在“超步”开始发送的消息,即使网络延迟时间比“超步”的长度短,该消息也只能在下一个“超步”中使用
    7. BSP模型中的全局障碍同步假定是用特殊的硬件支持的,很多并行机中可能并没有相应的硬件。

    BSP模型的实现

    BSP计算框架有很多实现,最有名的是Google的大规模图计算框架Pregel,首次提出将BSP模型应用于图计算。

    Yahoo!贡献的 Apache Giraph专注于送代图计算(如 Pagerank、最短连接等),每个Job就是一个没有 Reducer过程的 Hadoop Job。

    Apache Hama也是ASF社区的 Incubator项目,与 Giraph不同的是,它是一个纯粹的BSP模型的Java实现,并且不仅用于图计算,而且意在提供一个通用的BSP模型的应用框架。

    PRAM模型

    PRAM(Parallel Random Access Machine,随机存取并行机器)模型也称为共享存储的SIMD模型,是一种抽象的并行计算模型,它是从串行的RAM模型直接发展起来的。
    在这种模型中,假定存在一台容量无限大的共享存储器,有有限台或无限台功能相同的处理器,且它们都具有简单的算术运算和逻辑判断功能,在任何时刻各处理器都可以通过共享存储单元相互交互数据。

    PRAM模型的优点

    1. PRAM模型特别适合并行算法的表达、分析和比较,使用简单,很多关于并行计算机的底层细节,如处理器间通信、存储系统管理和进程同步等,都被隐含在该模型中;
    2. 易于设计算法和稍加修改便可以运行在不同的并行计算机系统上;根据需要,可以在PRAM模型中加入一些诸如同步和通信等需要考虑的内容。

    PRAM模型的缺点

    1. 模型中使用了一台全局共享存储器,且局存容量较小,不足以描述分布主存多处理器的性能瓶颈,而且共享单一存储器的假定,显然不适合分布存储结构的MIMD机器。
    2. PRAM模型是同步的,这就意味着所有的指令都按照锁步( Clock Step)的方式操作。用户虽然感觉不到同步的存在,但同步的存在的确很耗费时间,而且不能反映现实中很多系统的异步性。
    3. PRAM模型假设每台处理器可在单位时间内访问共享存储器的任一单元,因此要求处理器间通信无延迟、无限带宽和无开销。假定每台处理器均可以在单位时间内访问任何存储单元而略去了实际存在的、合理的细节,如资源竞争和有限带宽,这是不现实的。
    4. 未能描述多线程技术和流水线预取技术,而这两种技术又是当今并行体系结构应用最普遍的技术。

    LogP模型

    LogP模型是由Culler(1993)提出的,是一种分布存储的、点到点通信的多处理器模型。其中通信由一组参数描述,实行隐式同步。

    LogP模型的通信网络由4个主要参数来描述

    1. L(Latency):表示源处理器与目的处理器进行消息(一个或几个字)通信所需的等待或延退时间的上限,表示网络中消息的延迟。
    2. o(overhead):表示处理器准备发送或接收每条消息的时间开销(包括操作系统核心开销和网络软件开销),在这段时间内处理器不能执行其他操作。
    3. g(gap):表示一台处理器连续两次发送或接收消息时的最小时间间隔,其倒数即微处理器的通信带宽。
    4. P(Processor):处理器/存储器模块个数

    LogP模型的特点

    1. 抓住了网络与处理器之间的性能瓶颈。g反映了通信带宽,单位时间内最多有Lg个消息能进行处理器间传送。
    2. 处理器间异步工作,并通过处理器间的消息传送来完成同步。
    3. 对多线程技术有一定的反映。每台物理处理器可以模拟多台虚拟处理器(VP),当某台VP 有访问请求时,计算不会终止,但VP的数目受限于通信带宽和上下文交换的开销。VP受限于网络容量,最多有Lg台VP。
    4. 消息延迟不确定,但延迟不大于L。消息经历的等待时间是不可预测的,但在没有阻塞的情况下最大不超过L。
    5. LogP模型鼓励编程人员采用一些好的策略,如作业分配、计算与通信重叠及平衡的通信模式等。
    6. 可以预估算法的实际运行时间。

    LogP模型的不足

    1. 对网络中的通信模式描述得不够深入,如对重发消息可能占满带宽、中间路由器缓存饱和等未加描述
    2. LogP模型主要适用于消息传递算法设计,对于共享存储模式,则简单地认为异地读操作相当于两次消息传递,未考虑流水线预取技术、 Cache引起的数据不一致性及 Cache命中率对计算的影响。
    3. 未考虑多线程技术的上下文开销。
    4. LogP模型假设用点对点消息路由器进行通信,这增加了编程者考虑路由器上相关通信操作的负担。

    C3模型

    C3模型假定处理器不能同时发送和接收消息,它对超步的性能分析分为两部分:

    1. 计算单元(CU),依赖于本地计算量;
    2. 通信单元(COU),依赖于处理器发送和接收数据的多少、消息的延迟及通信引起的拥挤量。

    该模型考虑了两种路由(存储转发路由和虫蚀寻径路由)和两种发送接收原语(阻塞和无阻塞)对COU的影响

    C3模型的特点

    1. 用CI和Cp来度量网络的拥挤对算法性能的影响。
    2. 考虑了不同路由和不同发送或接收原语对通信的影响。
    3. 不需要用户指定调度细节,就可以评估超步的时间复杂性。
    4. 类似于H-PRAM模型的层次结构,C3模型给编程者提供了K级路由算法的思路,即系统被分为K级子系统,各级子系统的操作相互独立,用超步代替了H-PRAM中的 Sub PRAM进行分割。

    C3模型的不足

    1. C度量的前提为同一通信对中的两台处理器要分別位于对分网络的不同子网络内。
    2. 该模型假设网络带宽等于处理器带宽,从而影响了正确描述可扩展系统。
    3. 在K级算法中,处理器间的顺序可以有多种排列,但C3模型不能区分不同排列的难易程度。

    BDM模型

    1996年,J.F.JaJa等人提出了一种块分布存储模型(Block Distributed Model,BDM),它是共享存储编程模式与基于消息传递的分布存储系统之间的桥梁模型。

    其主要有4个参数。

    1. P:处理器个数。
    2. t:处理器从发出访问请求到得到远程数据的最大延迟时间,包括准备请求时间、请求包在网络中路由的时间、目的处理器接收请求的时间,以及将包中M个连续字返回给原处理器的时间。
    3. M:局部存储器中连续的M个字。
    4. 处理器发送数据到网络或从网络接收数据的时间。

    BDM模型的特点

    1. 用M反映出空间局部性特点,提供了一种评价共享主存算法的性能方法,度量了因远程访问引起的处理器间的通信。
    2. BDM认可流水线技术。某台处理器的K次预取所需的时间为+KMo(否则为K(r+Mo) 可编程性好。
    3. 考虑了共享主存中的存储竞争问题。
    4. 可以用来分析网络路由情况。

    BDM模型的不足

    1. 认为初始数据置于内部存储中,对于共享主存程序的编程者来说,需要额外增加数据移动操作
    2. 未考虑网络中影响延迟的因素,如处理器的本地性、网络重拥挤等。
    3. 未考虑系统开销。
    展开全文
  • 流水线技术与并行技术

    千次阅读 2017-03-24 18:53:08
    并行技术使得处理器可以 同时执行多条线程 。 最近在看WCET(Worst Case Execution Time, 最坏执行时间) 在软件系统中,WCET包括三个方面:一是多核处理器时多任务对共享变量的操作引起的;二是分布式系统下...

    处理器史上两次大的突破:流水线技术使得处理器可以同时执行多条指令;并行技术使得处理器可以同时执行多条线程

    最近在看WCET(Worst Case Execution Time, 最坏执行时间)

    在软件系统中,WCET包括三个方面:一是多核处理器时多任务对共享变量的操作引起的;二是分布式系统下master机查询选择Slave机所耗时间;三是网络请求和传输数据中消耗的时间。当然主要还是网络传输中耗时最多。

    在嵌入式系统中,线程的执行时间包括:事件的触发到响应时间、申请处理器的等待时间、数据的处理时间、申请设备的时间,以及写数据的时间。这只是单任务情况下,并没有考虑多任务引起的中断。

    核处理器的处理能力是指:指令在多处理器上执行的时一个核同时只能执行一条指令,但是一个线程是动态的,往往由多条指令才能完成,所以一个线程是在多核上共同完成的。

    受AMD率先推出64位处理器的激发,因特尔想起了“多核”,并在2005年4月推出封装双核的奔腾D和奔腾四至尊版840,从此处理器才进入到多核时代。但是多核以前,因特尔在1985年推出80486时,芯片才出现流水线技术,打破了处理器一次性只能处理单指令的技术壁垒。

    原因:

    而80486与80386相比,处理器的位数都是32位,总线位宽也都是32位。但是晶体管个数也从27.5万个正驾到125万个,处理指令速度增加了,时钟频率也从25MHz增加到了33MHz、40MHz、50MHz、66MHz,处理器尺寸也大大地减小了(减小到1微米工艺)。









    展开全文
  • ORACLE的并行技术

    千次阅读 2013-12-24 21:45:37
    并行是Oracle为了提高大数据量的运算效率而提供多进程协作技术,它可以让多个CPU同时处理一个计算任务,充分使用系统资源,提高计算效率。 Ø 什么操作支持并行? 大部分的DML(insert/update/delete/merge)、DDL、...

    Oracle并行FAQ

    关于Oracle并行的一些简单小结。

    Ø 什么是并行?

    并行是Oracle为了提高大数据量的运算效率而提供多进程协作技术,它可以让多个CPU同时处理一个计算任务,充分使用系统资源,提高计算效率。

    Ø 什么操作支持并行?

    大部分的DML(insert/update/delete/merge)、DDL、Query都支持并行操作。

    Ø 什么情况下需要启用并行?

    并不是所有的SQL都应该使用并行。要使用并行需满足以下两个条件,否则结果可能适得其反:

    1)机器有充分的空闲资源(CPU、内存等)

    2)参与运算的数据量大。在当前系统初定于参与运算数据量大于10GB或者SQL运行时间超过30分钟可考虑使用并行。

    Ø 如何启用并行?

    可以用hint、alter session或者设置对象并行属性三种方式设置启用并行。三种方式任意一种就可以使并行生效,如果多种方式同时存在的话,则优先级顺序是:hint -> alter session -> table/index degree。

     

    hint

    alter session

    table/index degree

    Query

    select /*+ parallel(a,8) */count(1) from table_name a;

    alter session force query parallel 8;

    select count(1) from table_name a;

    alter table table_name parallel 8;

    select count(1) from table_name a;

    DML

    默认情况下,parallel dml是禁用的,需要先用alter session启用:

    alter session enable parallel dml;

    update /*+ parallel(a,8) */ table_name a set col1=1;

    alter session force parallel dml parallel 8;

    update table_name a set col1=1;

    alter session enable parallel dml;

    alter table table_name parallel 8;

    update table_name a set col1=1;

    以上三步缺一不可。

    DDL

    alter session force parallel ddl parallel 8;

    create table table_name as select * from ……

    create table table_name parallel 8 as select * from ……

    create index index_name …… parallel 8;

    注意:

    1) 上述的alter session enable只是表示让当前会话支持并行,最终并行需要通过hint或者table/index degree来实现;而alter session force表示强制并行,无需hint等配合使用。

    2) 建议在hint或者alter session中控制并行,不要通过修改表或者索引的属性(degree)来控制。在查询频繁的情况下,把表或者索引的并行度改大可能会导致严重的性能问题。

    Ø 对于insert ……select ……如何设置并行?

    insert……select….包含两个部分,query和dml,可以为这两个部分分别设置并行度。因为insert操作是dml,因此还需要通过alter session方式把pdml启用,如:

    alter session enable parallel dml;

    insert /*+ append parallel(a,4) */ into table_a a

    select /*+ parallel(b,8) */ * from table_b b where ……;

    Ø 在存储过程/包中如何启用并行?

    参考上文所述。唯一的区别是如果需要执行alter session,则需要用动态语句执行,如:

    execute immediate ‘alter session enable parallel dml’;

    Ø 并行度该设置多大?

    一般来说,并行度越大SQL的执行效率越高,但是不建议设置超过CPU核数的并行度。在当前的RAC中,考虑到同时会有多个任务在跑,为了不影响其他任务,并行度需要严格控制在32个以下,一般的建议值是8和16。

    另外,建议并行度设置为2的n次方,如2/4/8/16/32等。

    Ø 既有DML又有query的SQL如何设置并行度?如insert …..select…..

    1) 如果写入量大,则在insert上加并行会明显提升性能;否则在insert上加并行基本没有什么意义。如:

    insert into t(game_name,num) select game_name,count(1) cnt from popt_total_login_all_his group by game_name;

    这种SQL主要瓶颈在查询上,写入量很少,因此只需要在查询部分设置并行即可。

    2) 如果查询量大,则在查询上加并行会明显提升性能;

    3) 如果写入和查询量都大,则在两个部分都要加并行,不要让其中一方成为瓶颈。

    总结起来就是:瓶颈在部分,就在这部分上加并行;如果都有瓶颈,则都加并行。

    对于pdml,建议:

    1) 由于并行dml有诸多限制和弊端,因此在写入量不大的情况下,尽量不启用并行dml。

    2) insert和query的并行度不一定要一致,可根据实际调整,一般设置query并行度大于等于insert并行度。并行度最好设置为2的n次方。

    3) 并行度不要设置超过CPU的个数

    Ø 如何查询并行是否起作用?

    1) 在SQL执行的时候,在PL/SQL DEV看是否有多个活动会话执行一个SQL

    2) SQL执行完了以后,在同一个会话查询v$pq_sesstat

    SQL> select * from v$pq_sesstat;

    STATISTIC LAST_QUERY SESSION_TOTAL

    ------------------------------ ---------- -------------

    Queries Parallelized 1 1

    DML Parallelized 0 0

    DDL Parallelized 0 0

    上面的结果中,如果last_query有非0的值,表示并行起作用了。

    其他方法先不告诉你了……

    Ø 如何控制并行度?

    可以用hint、alter session以及table/index degree指定并行度,详细请参考上文【如何启用并行】部分。

    Ø 如何跨实例并行?

    在当前的RAC环境,为了减少cache fusion,提高效率,默认情况把SQL并行限制在同一个节点执行。如果有超超大的SQL需要多个节点同时并行,则可以用如下语句来控制并行可跨越的实例:

    alter session set parallel_instance_group=dw; --可跨越4个节点

    alter session set parallel_instance_group=dw1; --限制在节点1执行

    alter session set parallel_instance_group=dw12; --限制在节点1和2执行

    alter session set parallel_instance_group=dw124; --限制在节点1/2/4三个节点执行

    以此类推。

    原则上不允许跨实例并行,如果必须跨实例,则使用前需征得DBA同意。

    Ø 为什么我的SQL达不到我设定的并行度?

    并行度受以下(不限于)条件限制:

    1) 系统的session、process参数的设定(一般不会超过)

    2) parallel_max_serversx限制。这个限定目前是256,意味着一个节点最多启动256个并行从属进程。在多用户多SQL同时执行的情况下,很容易达到这个上限。

    3) 对于个人用户,当前最多只允许4个或者10个连接同时访问数据库。这意味着个人用户下,并行度不能超过4或者10。(systemuser等程序账号不在此限制范围之内)

    Ø 并行有什么弊端?

    1)并行dml会浪费空间,并行度越高,浪费越厉害

    2)被并行dml影响的表需要提交或者回滚后才能被后续的SQL使用,否则会报错,这可能会影响事务的一致性。

    3)并行容易触发异常或者bug,降低系统和程序的稳定性

    展开全文
  • 并行处理技术

    2009-12-28 14:39:00
    模型并行性是指在同一时刻或同一时间间隔内完成两种或两种以上性质相同或不相同的工作,只要在时间上互相重叠,都存在并行性。计算机系统中的并行性可从不同的层次上实现,从低到高大致可分为:(1)指令内部的并行...
  • 大数据并行处理技术

    2020-04-03 10:11:08
    MapReduce是一个并行计算与运行软件框架(Software Framework) Hadoop MapReduce的一个经典实例是Hadoop Kafka 数据管道。 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流...
  • 这篇文章就计算体系结构展开讨论,从计算框架特别是异构系统下的计算模式和并行计算结构设计的角度,分析异构并行计算架构设计和软件编程技术并行计算体系结构 不同层次的并行化设计已成为现代计算体系设计的...
  • 14.1 理解不同的并行技术  在这一节中,我们会讨论三种技术,并使用简单的示例来演示。我们将使用 .NET 的并行扩展(Parallel Extensions to .NET),这是一个并行编程库。它是 .NET Framework 4.0 标准的一...
  • 并行多核编程技术 1

    千次阅读 2013-10-31 16:25:34
    本系列文章将会对.NET 4中的并行编程技术(也称之为多核编程技术)以及应用作全面的介绍。  本篇文章的议题如下:  1. 并行编程和多线程编程的区别。   2. 并行编程技术的利弊   3. 何时采用并行编程  1....
  • 并行数据库技术分析与发展展望

    千次阅读 2014-12-17 11:51:29
    我将首先描述什么是并行数据库以及它们的典型特征;然后从存储、执行、管理等方面分析其技术要点;最后展望一下并行数据库的未来发展方向。...在组成大规模计算机集群的时候,通常两种特性要考虑:并行和分布式。并行
  • 并行信号处理技术-序

    千次阅读 2017-09-11 22:27:38
    下面几篇将连载并行信号处理技术,内容来自于我原来的工作,略作总结。 背景和意义 然而随着材料科学和电子对抗技术发展,雷达面临着前所未有的挑战。隐身、低空、高速、高机动目标对雷达的探测能力提出了新的要求...
  • 云计算中的并行计算技术分析

    千次阅读 2015-06-19 09:31:09
    本文阐述了并行计算和云计算的关系,简要回顾并行计算的历史,分析了并行计算的重要技术OpenMP、MPI和Erlang,研究了这些技术在中国电信的应用方法,并介绍了中国电信实施云计算、并行计算的指导思想、原则和策略。...
  • 并行算法的设计技术

    千次阅读 2012-12-02 22:20:13
    1. 划分设计技术 1.1均匀划分技术 n个元素A[1..n]分成p组,每组A[(i-1)n/p+1..in/p],i=1~p 示例:MIMD-SM模型上的PSRS排序  begin  (1)均匀划分:将n个元素A[1..n]均匀划分成p段,每个pi处理  A[(i-1)n/p+...
  • 高性能并行计算技术交流平台

    千次阅读 2012-05-27 15:56:32
    发个QQ群号125428306。大家来交流技术。神马CUDA,OMP,MPI,Win32 threads,PThreads愿意分享,讨论问题的童鞋们欢迎加入啊!!
  • 汉澳sinox并行矩阵计算机的技术实现

    千次阅读 2015-01-12 17:56:10
    最近linus提出并行技术不可行,我仔细的分析思考了汉澳sinox的并行技术,汉澳矩阵计算机逐渐清晰起来,并可能很快成为现实。 并行技术 并行是指在同一时刻,多条指令在多个处理器上同时执行。 矩阵一般指阵列,2...
  • 本系列文章将会对.NET 4中的并行编程技术(也称之为多核编程技术)以及应用作全面的介绍。  本篇文章的议题如下:  1. 并行编程和多线程编程的区别。   2. 并行编程技术的利弊   3. 何时采用并行编程  1....
  • 前言:最近再搞个PCIe的高速串行总线的项目,关于串行和并行数据的传输到底谁更快,分别有哪些优势和劣势呢等等一些问题现在做个整理,是对自己学习的一个记录,同时呢,也为刚刚想入门的或者对高速串行总线有些误解...
  • 并行网关

    万次阅读 2020-06-24 20:52:22
    并行网关在实际运用中的重要性,本文通过一个做饭的例子形象说明,这也是工作流引擎、工作流系统中比较重要的环节。
  • 并行程序设计探讨(2)——并行实现技术通过“并行程序设计探讨(1)”的介绍,相信大家都已经对并行系统相关的概念了初步的了解。不过看起来挺吓人的,一堆的术语和概念,想起来头就有点大!!幸运的是真正需要...
  • 并行处理技术(parallel computer system)

    千次阅读 2009-04-08 23:55:00
    并行处理技术是40年来在微电子、印刷电路、高密度封装技术、高性能处理机、存储系统、外围设备、通信通道、语言开发、编译技术、操作系统、程序设计环境和应用问题等研究和工业发展的产物,并行计算机具有代表性的...
  • .NET4.0并行计算技术基础(6)

    千次阅读 2009-09-29 10:16:00
    .NET4.0并行计算技术基础(6) 金旭亮 前几讲的链接: .NET 4.0 并行计算技术基础(1) .NET 4.0 并行计算技术基础(2) .NET 4.0并行计算技术基础(3).NET 4.0并行计算技术基础(4).NET4.0并行计算技术基础(5)======...
  • .NET4.0并行计算技术基础(5)

    千次阅读 2009-09-27 09:34:00
    .NET4.0并行计算技术基础(5) 金旭亮 前几讲的链接: .NET 4.0 并行计算技术基础(1) .NET 4.0 并行计算技术基础(2) .NET 4.0并行计算技术基础(3).NET 4.0并行计算技术基础(4) ================================...
  • CUDA是NVIDIA发布的GPU上的并行计算平台和模型, 2006年第一代CUDA发布,截至2018年最新的是9代CUDA1、GPU并行计算的发展历程早期GPGPU(汇编)--中期GPGPU--目前的GPGPU(CUDA)GPU和CPU相比的优势在于,架构,显存,...
  • 摘要:通过这篇文章,我们了解了GaussDB(DWS)并行计算技术的原理以及调优策略。希望广大开发者朋友们能够在实践中尝试该技术,更好地进行性能优化。 随着硬件系统的越来越好,数据库运行的CPU、磁盘、内存资源都...
  • .NET4.0并行计算技术基础(3)

    万次阅读 2009-09-15 10:30:00
    .NET4.0并行计算技术基础(3) 这是一个系列讲座,前面两讲的链接为: .NET 4.0 并行计算技术基础(1) .NET 4.0 并行计算技术基础(2) 在前面两讲中,基本上介绍完了并行计算基础理论与相关概念,学习不是目的,应用...
  • .NET4.0并行计算技术基础(4)

    千次阅读 2009-09-25 10:53:00
    .NET4.0并行计算技术基础(4) 这是一个系列讲座,前面几讲的链接为: .NET 4.0 并行计算技术基础(1) .NET 4.0 并行计算技术基础(2) .NET 4.0并行计算技术基础(3) 版权声明在第一讲中。 =======================...
  • 为执行并行计算,计算资源应包括一台配多处理机(并行处理)的计算机、一个与网络相连的计算机专有编号,或者两者结合使用。并行计算的主要目的是快速解决大型且复杂的计算问题。    并行计算可以划分成时间并...
  • .NET 4.0 并行计算技术基础(1) .NET 4.0 并行计算技术基础(2) .NET 4.0并行计算技术基础(3).NET 4.0并行计算技术基础(4).NET4.0并行计算技术基础(5).NET4.0并行计算技术基础(6) .NET4.0并行计算技术基础(7) ...
  • .NET4.0并行计算技术基础(7)

    千次阅读 2009-12-07 22:09:00
    19.3.4任务并行库原理初探 在上一小节中,我们看到只需简单地调用...您一定会对任务并行库的强大功能了很深的印象,一些喜欢刨根问底的读者可能会问: 任务并行库怎样实现代码的并行执行? 任务并行库的底层技术
  • .NET4.0并行计算技术基础(2)

    万次阅读 热门讨论 2009-09-13 11:16:00
    .NET4.0并行计算技术基础(2) 上一部分介绍了CPU与“核”以及“并行”和“并发”的区别,这一部分我们将进一步介绍并行计算的性能衡量与并行计算系统的大致分类,为后面介绍.NET 4.0的并行计算打下基础。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 320,016
精华内容 128,006
关键字:

并行技术有哪些