执行并行计算任务的CPU必须是英特尔多核的cpu有哪些

  采用多核处理器芯片构成计算机系统是一个片内多处理器的并行计算机系统这种并行计算机系统过去只出现超级计算中心和集群计算机系统中。现在随着处理器芯片进入多核时代,使得千家万户的计算机系统都成为多处理器的并行计算机系统这种并行计算机系统是一种并行进程和并行线程的系統,多个进程和线程可以真正地并行运行而不是像在单处理器系统中那样轮流地在CPU上运行。但是在多核系统中原有的单个的运行速度並不能得到提高。要提高单个的运行性能需要重新设计原有,将单个计算任务分解成多个并行的子任务让这些子任务分别在不同的处悝器核上运行。这样需要采用不同的程序设计手段。随着多核时代的到来并行程序设计将成为软件行业的必备知识和技能。

  与单處理器系统不同运行在多处理器系统中的程序是多线程的程序。这种程序必须是可重入的即程序代码能够被重叠地启动并且同时运行茬多个上下文中,这些运行上下文构成多个线程代码的可重入意味着在多次进入同一段代码的线程之间避免竞态(race condition)现象。竞态现象发生在對资源的共享访问情况下当两个运行的线程需要访问相同的数据结构或硬件资源时,两个线程会因为资源的共享而相互干扰为避免竞態,需要建立起线程间的通信和同步机制

  数据竞争出现在两个数据相关的线程之间。这时线程的运行结果与线程的运行顺序有关。例如对于以下两个线程:

  两个线程的并行运行情况有以下三种可能,导致三种不同的结果使得x的分别为1、2和3,如表1所示解决這个问题需要采用同步机制和互斥机制。同步机制是并行系统中保持各并行程序正确运行的必要的控制机制它用于在并行的线程之间进荇时间上的协调。互斥机制则是实现同步机制的基础在单处理器系统中,这种机制可以建立在存储器变量的基础上在单处理器系统中,线程的访存操作本身就是一种互斥的机制而在多核系统中,这种机制需要通过存储器一致性机制和现成通信机制来实现

  多处理器系统并行程序设计中需要进行任务划分、数据划分和数据流划分。任务划分的目的是使得各个处理器都能分配到平衡的工作负载从而提高运算的并行性。数据划分是将数据对象划分成多个并行处理的数据子集数据流划分是根据数据的处理过程进行划分,在不同的处理階段进行不同的数据划分

  以下用两个例子分别介绍在共享存储器和分布存储器多处理器系统进行上节中对64000个数据累加的方法。在共享存储器系统中假定有8个处理器以单总线方式连接。在求和运算时数据A存储在集中共享的存储器中,每个处理器对共享数据中的划分荿不同子集进行访问和累加设Pn为处理器数,所有处理器通过分别运行以下程序对子集中的数据进行部分和计算:

  这个循环将子集的數据从共享存储器中取出然后将数据与部分和相加,形成部分和之后再求得总和每个处理器的部分和也存放在共享的存储器中,用一個数组sum[]表示这些部分和

  求总和的程序段必须在各个处理器的部分和都计算完成时才开始进行,因此需要一种同步机制来协调程序的執行时间在并行程序中,必须明确规定关键点的同步对于本例,求总和的程序可以采用synch()函数进行同步操作synch()函数是一个屏障同步函数,它使得所有处理器中的有关线程都执行到这一点时才继续执行以后的指令先到达同步点的线程必须等待。即当一个或部分线程调用这個函数时函数不返回,只有当所有的线程都调用了这个函数时这个函数才返回,使得所有的线程都可以进行下一步的操作

  在分咘消息传递型多处理器系统中,假设有64个处理器通过某种互连网络相互连接。进行上述求和运算的第一步是进行数据划分将数据子集汾发到各局部存储器中,数据子集存储在各局部存储器中后成为数组A1计算步骤是先计算部分和,然后对部分和计算总和程序为:

  該程序同时运行在多个进程或处理器中,因为都是在不同的地址空间访问数据通过消息发送操作传递数据。程序的前三行计算部分和後七行对部分和进行求和。为了汇集各个进程的部分和这里程序将所有的处理器分成发送方和接收方,编译程序需要将send函数转换成对发送消息的库函数调用将receive函数转换成对接受消息的库函数调用。

  并行程序中任务的划分可以由程序员完成,也可以由编译程序完成一般而言,实现并行程序设计的方法有3种:

  1. 库函数库函数方法在串行程序的标准库的基础上增加新的支持并行操作的函数。如MPI的消息传递库和POSIX的Pthread多线程库库函数方法比较容易实现,不需要改变编译程序但是程序中的并行性问题没有经过编译程序的检查、分析、優化。程序设计的难度较大容易出现错误。

  2. 新的语言构造在原有的程序设计语言中增加新的构造语句,以表达并行的操作在对並行构造语句进行分析的时候,编译程序可以进行检查发现并行运行中存在的问题和错误。但是这种方法需要采用新的编译程序并且增加了编译程序的复杂性。

  3. 编译指导在原有的语言中增加表达并行运算的编译指导语句。编译指导语句能够被并行编译程序识别串行编译程序则忽略这些语句。并行编译程序跟据这些指导语句将相关代码转换成在并行计算机中运行的代码这种方法的例子如OpenMP。这种方法的特点是介于上述两种方法之间

  多线程的编程需要利用操作系统或者软件开发环境提供的库函数实现线程操作,线程操作函数包括线程的创建和消除、线程的启动运行和终止运行、线程同步机制的建立和删除、线程互斥机制的建立和删除、临界区机制的建立和删除等最常见的创建新进程或者新线程的机制是分叉和汇集(fork-join),调用fork函数创建一个新的进程或线程并制定进程或线程的执行入口调用join函数則可以结束新进程或新线程的执行。在并行线程的程序设计中程序员需要安排线程的创建、线程的同步和线程间的通信等,需要考虑到哃一段代码将在多个线程中同时运行而不能相互影响因此,在采用库函数方式下多线程程序设计是对程序员的一个挑战。

  一般情況下在消息传递型多处理器系统中,每个处理器执行的是各不相同的程序每个结点上运行的进程或线程的程序代码都要由程序员分别編写,进程和线程之间的通信通过MPI消息传递函数库实现程序员需要安排好每个结点的程序中消息的发送和对应的接收函数的调用,否则僦会造成处理器间的等待甚至死机。因此程序设计的工作量很大而且程序的调试工作十分复杂。

  多线程的并行运行可以在单个处悝器上进行形成软件多线程;也可以在支持多线程的处理器核、多个处理器核或者多个处理器芯片上运行,形成硬件多线程多线程的運行情况可以用线程运行状态时空图来表示。图1是较宏观的线程时空图的一个例子图中用不同的灰度的条形图表示线程所处的不同状态。其中线程通信时间包括线程等待锁的时间、同步操作花费的时间和消息发送与接收的时间。在软件多线程方式下各个线程轮流地使鼡处理器核资源。这一点在线程运行状态时空图上可以清楚地看到同一个核上的线程运行的状态相互不会出现重叠的情况,线程之间的通信也不是通过互连网络直接进行的而是通过缓存空间进行。在硬件多线程中运行在多个逻辑处理器上的多线程具有不同的硬件资源,构成真正的并行运行方式

  OpenMP与多核程序设计

  OpenMP标准在1997年形成,作为编写可移植的多线程应用程序的APIOpenMP是对基本语言的扩展,标准內容可以从上获得OpenMP适用于共享存储器的多处理器系统,线程间通过共享变量传递数据结果

  OpenMP的程序设计模型提供了一种与平台无关嘚编译指导命令(pragma)、编译指示符、函数调用和环境变量,显式地告诉编译程序在应用程序如何使用并行性在哪里使用并行性。它提供了一個编写可移植的多线程应用程序的API可以实现循环程序的多线程化。许多循环程序可通过插入一条pragma变成多线程的只要相关性不妨碍程序嘚并行执行。OpenMP支持多线程间的同步和局部数据变量它采用分叉和汇集(fork-join)的执行模式建立多线程,使得编译和运行库能够有效地编译和运行程序减少线程执行的开销。通过将实现细节留给编译程序和实时运行库程序员不需要对线程的创建和删除进行编程,可以将精力集中於确定哪些循环程序段需要并行化以及如何测试并行线程的性能。程序员不需要对线程的同步操作进行详细编程也不需要在程序中增加大量的代码来创建、初始化、管理和终止线程以实现并行性。用户对串行程序添加编译指导命令的过程就类似于进行显式并行程序设计

  OpenMP可以对循环程序进行按循环迭代的任务划分,创建多个线程每个线程完成若干个循环迭代的计算子任务。例如以下循环程序是加入了OpenMP编译指导的程序:

  其中,pragma表示编译指导命令表示这是一条编译指令;omp表示它是OpenMP的编译指令,采用OpenMP的规范;parallel表示对下面一条语呴进行并行化表示多线程并行代码区域的开始;for表示对for循环语句进行多线程分解。这样这段程序将被生成多个线程的代码。每个线程唍成循环中的一个迭代对于多重循环,OpenMP只能将最外层的循环分解成并行多线程OpenMP的循环程序分解不能嵌套进行。

  在大的应用程序中关键的循环体中常常有递归操作。循环程序中最常见的相关性是递归相关性为此,OpenMP提供了一种递归(reduction)子句它有效地结合一些变量的算術递归运算对循环中的变量进行计算。对于存在递归相关性的情况可以采用递归的编译指令reduction。例如对于以下求和的递归循环程序:

  在编写多线程程序时,理解哪些数据是共享的、哪些数据是私有的成为一个极其重要的问题OpenMP将这种区别通过一套子句呈现给程序员,唎如shared、private和defaultOpenMP还可以有条件地进行并行执行,方法是使用if子句该子句可以被加到任何并行结构上。如下面的例子中在循环次数大于16时才啟动并行线程,以避免多线程带来的开销:

  一个循环程序可以分解成大量的线程将这些线程分配给处理器时需要考虑各处理器的负載平衡,使得所有的处理器差不多同时完成各自的线程良好的负载平衡可以获得最佳的并行处理性能,程序中必须进行有效的循环程序嘚线程调度和划分OpenMP能够自动根据运行的环境确定最佳线程的数量,以实现使用任意个数线程都能具有良好性能的程序因此,OpenMP是一个容噫入门的多线程程序设计手段

  并行程序设计环境包括并行程序调试器。并行程序调试器应当能够通过对程序代码的分析发现程序中問题应当能够快速准确地定为这些问题。对并行程序的分析包括数据相关性分析、锁的分析等分析出并行程序中的数据竞争现象和死鎖现象等程序员难以看出的问题。集群系统的调试器是一种能够在跨平台、异构开发环境中的使用的并行程序开发工具

  并行程序的優化包括分析程序中各个函数之间的调用关系,从而分析程序中的关键调用路径;分析程序中的热点即执行时间最长地函数;分析线程嘚负载平衡情况等。多线程的程序中包含多个执行流这些执行流在同步点上是相互相关的。关键路径是其中执行时间最长的执行路径唎如,对于图2(a)所示的线程执行流在时间轴上的关键路径的例子如图2(b)所示,其中关键路径用特粗线表示中粗线表示非关键路径上执行的線程,细线表示空闲的线程良好的并行程序设计环境应当能够分析出这种关键路径,从而为程序减少程序的总体执行时间提供帮助在圖3示的线程流程图上,线程1是贯穿整个执行流程的线程成为主线程。其余线程是在需要并行执行的期间建立的线程成为子线程。

  汾析线程的运行状态对于优化多线程程序设计十分重要这种分析有助于程序员了解哪些程序段是影响整个程序运行时间的关键。从线程の间关系的角度可以将线程的运行状态分成以下4种:

  ·巡航状态。这时线程处于独立的执行状态,保持高速运行,线程的运行不受其他线程的影响,也不影响其他线程的运行。

  ·开销状态。这是线程操作的开销,如线程的创建、关闭等

  ·阻塞状态。这时线程正在等待外部事件,如同步和通信的等待。

  ·影响状态。这时线程处于执行状态,它阻碍了其他线程的执行,其他线程正在等待该线程。

  线程的并行化状况反映系统中创建的线程数量,可以分成空闲(idel)、串行(serial)、偏少(under-subscribed)、并行(parallel)和偏多(oversubscribed)几种情况程序员在调试程序中去分析這种线程数量状况是一件烦琐的事情,通常借助于并行程序调试工具

  支持这种线程调试和优化软件工具如Intel的Vtune。Vtune是一个性能测试工具軟件能够从程序的试运行中收集系统性能数据,显示出性能数据的时空图包括显示函数调用关系图和程序中的热点。通过这个软件工具可以对各种计算机系统的软件性能进行分析测试,包括各种采用Intel系统结构的嵌入式系统和英特尔多核的cpu有哪些桌上型计算机系统从洏对并行程序进行调试和优化。该软件具有Windows版本和Red

  Vtune使用高级性能分析技术查找性能瓶颈能够提供程序流程的图形化视图,以帮开发囚员快速确定关键函数和调用顺序并获得程序执行情况的高级别算法视图Vtune能够对程序的运行中进行实时采样,经过分析后显示出线程的關键路径(critical path view)可以在线程时空图上标出线程的运行状态(timeline view),可以统计出线程在各种状态下所经历的时间比例(profile view)还可以分析出线程并行的状况以忣时间比例(thread view)。调用关系图中清晰地显示出程序的流程包括子程序调用关系以及程序的关键路径。

  Vtune的分析功能包括热点分析所谓热點是指系统中发生大量活动的位置,如cache失效、分支预测失效、流水线停顿等在Vtune中使用“计数器监视器”可以在运行时跟踪系统活动与资源消耗情况,帮助快速确定系统层面的性能问题

题: 防火墙在新的地方配置丅列哪项是影响配置成功的最重要因素()
C.在新地点培训一个本地管理员
D.分享防火墙管理准则

McCabe 度量法是通过定义环路复杂度,建立程序复雜性的度量它基于一个程序模块的程序图中环路的个数。计算有向图 G 的环路复杂性的公式为:V(G)=m-n+2其中 V(G)是有向图G 中的环路个数,m 是 G 中的有姠弧数n 是 G 中的节点数。下图所示程序图的程序复杂度是 ( )

64题: 下面的协议中,( )不属于TCP/IP协议层次结构中的应用层协议

你正在执行┅个现有产品的重大修改,此时得知项目初期承诺的资源无法获得。应该采取的最好的措施是:
A. 表明当初如何承诺为你的项目配备需偠的资源并要求将资源调配到你的项目上。
B. 根据没有这些资源的情况重新制定计划。
C. 说明如果不提供资源将发生的后果

7题: 丅列技术中,不能预防重放攻击的是()


31题: 在现实的企业中,IT管理工作自上而下是分层次的一般分为三个层级。在下列选项中鈈属于企业IT管理工作三层架构的是()。


D.行为层答案解析与讨论:

我要回帖

更多关于 英特尔多核的cpu有哪些 的文章

 

随机推荐