多核

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.多核与多处理器系统的主要区别是什么?
多核处理器(CMP)就是将多个计算内核集成在一个处理器芯片中,从而提高计算能力。

按计算内核的对等与否,CMP可分为同构多核和异构多核。

计算内核相同,地位对等的称为同构多核。

反之称为异构多核。

多处理器指多个CPU,每个CPU可以是单核或多核的。

虽然同时使用多个CPU,但是从管理的角度来看,它们的表现就像一台单机一样。

对称多处理器(SMP)结构是近来最流行的多处理器结构,系统将任务队列对称地分布于多个CPU之上,从而极大地提高了整个系统的数据处理能力,而非对称结构已比较少见。

区别:多处理器系统多年前已经出现,它与多核系统的主要区别是:
①多核系统只有一个物理处理器,这个物理处理器包含两个或更多个核,而多处理器系统有两个或更多个物理处理器。

②多核系统与多处理器系统性能相似,但成本常常要低得多,原因是多核处理器比多个相同的单个处理器价格要低,也不需要支持多个处理器的母板,如多处理器插头。

③多核系统也共享计算资源,在多处理器系统中这些资源常常是被复制的,如L2高速缓存和前端总线,多核处理器具有核间通讯和存储共享特点,而多处理器没有。

2.SIMD和MIMD所代表的计算模型是什么?主要区别和各自的系统结构示意图。

SPMD的含义是什么?答案:SIMD是同步并行计算模型,MIMD是异步并行计算模型。

SIMD单指令多数据流,以同步方式,在同一时间内执行同一条指令。

MIMD多指令多数据流,全面的并行处理。

各自的结构示意图:
SPMD的含义是Single Program Multiple Data,单程序流多数据流。

(见上图)程序被拆分成多个子任务,子任务在多个处理器以不同的输入同时执行,以加快计算速度。

SIMD同步并行计算模型:①共享存储的SIMD模型(PRAM模型)②分布存储的SIMD模型(SIMD互联网络模型) MIMD异步并行计算模型:①异步PRAM模型②BSP模型③LogP模型④C3模型
区别: SIMD计算机是所谓的阵列机,它有许多个处理单元(Pe),由同一个控制部件管理,所有Pe都接收控制部件发送的相同指令,对来自不同数据流的数据集合序列进行操作。

MIMD计算机包括多处理机和多计算机两类,它们都由可各自执行自己程序的多处理器组成。

其中,多处理机以各处理器共享公共存储器为特征,而多计算机以各处理器经通信链路传递信息为特征.它们与SIMD计算机的根本区别在于,SIMD机中每台处理器只能执行中央处理器的指令,而MIMD机中每台处理器仅接受中央处理器分给它的任务,(从各自存储器中存取指令和数据)它执行自己的指令,所以可达到指令、任务并行。

3.能说出一种解决多处理器系统中cache和内存数据一致性问题的方法。

1.监听总线法是通过总线监听机制实现Cache与内存之间的数据一致性,一般采用写无效(Write—
Invalidate)和写更新(Write—Update)两种策略。

写无效策略的基本思想是当私有Cache的某个数据块更新时,将其他Cache中含有该数据块的数据均置为无效。

更新策略的实现方法是当某个处理机在更新私有Cache的同时,将更新后的数据块发送给所有相关的Cache,并用新的数据覆盖原来的数据,而不管这些Cache是否会读取这些数据。

2.目录法是将内存中每个共享数据块设置一定的目录项,用于记录那些Cache含有该数据块的拷贝。


某个处理机对私有Cache进行数据更新操作时,系统根据Cache目录的内容将所有其他存有相同内容的Cache拷贝置为无效。

一般采用三种形式:全映射目录、有限目录和链式目录。

4.并行算法并行加速比S,效率E和费用cost的计算公式是什么。

说明在什么情况下可能出现超线性加速
比?何谓费用最佳的并行算法cost-optimal?
S = (最优串行算法的执行时间Ts)/(并行程序执行时间Tp)
E = S/p = Ts/ (Tp*p) (p是处理器个数)
Cost = Tp*p 出现超线性加速比归功于高速缓存的合理使用或者并行算法采用探索策略
如果Cost(n) = O(Ts) 即E=1时,称该并行算法费用最佳
5.Amdahl定理中给出的公式是什么,对并行程序设计的指导意义是什么?
加速比=采用改进措施后性能/未采用改进措施前的性能
=未采用改进措施前执行某任务时间/采用改进措施后执行某任务的时间
n个处理器加速因子S=n/[1+(n-1)f]=1/(1/n+f) f为非平行百分比(串行),S不超过1/f
Amdahl 定理说明,对问题的并行分解非常重要。

并行算法设计非常重要,
否则,并行加速比可能被限制在1/f,无论使用多少处理单元。

6.Task dependency graph 和Task interaction graph的定义及画法。

对同一问题task dependency graph 的画法
是否唯一?TDG:连通图G=<V,E> v属于V, v 表示一个任务, 边e=< u,v> 表示在任务u执行完之前,任务v无法开始执行。

TIG:带权连通图G(V,E,C), v属于V, v 表示一个任务, e=(v,w,c), c表示边e的权值, 通常是代表通信量.
不唯一。

简单例子。

7.在pthread中,thread之间的同步,对关键区域的共享使用时有几种实现方式,各自的特点是什么?
线程互斥和同步——Mutex:①原子性。

对mutex的加锁和解锁操作是原子的,一个线程进行 mutex 操作的过程中,其他线程不能对同一个 mutex 进行其他操作。

③非忙等待。

等待mutex的线程处于等待状态,直到要等待的mutex处于未加锁状态,这时操作系统负责唤醒等待此mutex的线程。

②单一性。

拥有mutex的线程除非释放mutex,否则其他线程不能拥有此mutex。

线程互斥和同步——条件变量:条件标量是线程的同步设备。

在线程间使用条件变量可以使得一个线程在执行过程中,因满足某个条件而发出信号通知另一个线程;而另一个线程可以处于挂起状态,等待某个条件的满足后,才继续执行。

条件变量必须和mutex一起使用来避免竞争情况。

POSIX 信号量:POSIX 信号量在多线程编程中可以起到同步或互斥的作用。

用POSIX 信号量可以实现传统操作系统P、V操作。

由于POSIX信号量不是内核负责维护,所以当进程退出后,POSIX信号量自动消亡。

或者:①锁:获得锁的线程可以完成“读-修改-写”的操作,然后释放锁给其它线程,没有获得锁的线程只能等待而不能访问共享数据,这样“读-修改-写”三步操作组成一个原子操作,要么都执行,要么都不执行,不会执行到中间被打断,也不会在其它处理器上并行做这个操作。

特点:原子性\单一性\非忙等待
②信号量:表示可用资源的数量,这个数量可以大于1。

这种信号量不仅可用于同一进程的线程间同步,也可用于不同进程间的同步。

特点:信号量被定义为一个整数变量,用两个原子的操作wait和signal来操作信号量
③条件变量:在pthread库中通过条件变量来阻塞等待一个条件,或者唤醒等待这个条件的线程
特点:条件标量是线程的同步设备、条件变量必须和锁一起使用来避免竞争情况。

8.能用Pthread 或OpenMP 设计程序,实现矩阵与向量的乘法, 计算等程序。

#pragma omp parallel default(private) shared (npoints) \
reduction(+: sum) num_threads(8)
{sum = 0;
#pragma omp for 串性代码自动并行化
for (i = 0; i < npoints; i++) {
rand_no_x =(double)(rand_r(&seed))/(double)((2<<14)-1);
rand_no_y =(double)(rand_r(&seed))/(double)((2<<14)-1);
if (((rand_no_x - 0.5) * (rand_no_x - 0.5) +(rand_no_y - 0.5) * (rand_no_y - 0.5)) < 0.25)
sum ++; }
} #pragma omp parallel default(private) shared (a, b, c, dim)
num_threads(4)
#pragma omp for schedule(static)
for (i = 0; i < dim; i++) {
for (j = 0; j < dim; j++) {
c(i,j) = 0;
for (k = 0; k < dim; k++) {
c(i,j) += a(i, k) * b(k, j);
}
}
} 9. MapReduce 的基本原理是什么?书写MapReduce 程序的主要过程有哪些?
核心操作Map 和Reduce MAP :把一组数据一对一的映射为另外的一组数据,映射的规则由一个函数来指定 Reduce :对一组数据进行归约,归约规则由一个函数指定
Map 是一个把数据分开的过程,Reduce 则是把分开的数据合并的过程。

Map 和Reduce 操作独立地对每个元素进行操作,操作是没有副作用的
Map-Reduce 框架的运作完全基于<key,value>对,即数据的输入是一批<key,value>对,生成的结果也是一批<key,value>对,只是有时候它们的类型不一样而已。

Key 和value 的类由于需要支持被序列化(serialize )操作,所以它们必须要实现Writable 接口,而且key 的类还必须实现WritableComparable 接口,使得可以让框架对数据集的执行排序操作。

10. 讨论多核体系结构与虚拟计算(透明计算)技术的结合方式和结合意义。

11. CUDA 是什么?GPGPU 给并行计算带来了哪些新的变革?
(1)Computing Unified Device Architecture 统一计算设备架构,CUDA 即在开发领域向开发者提供的使用GPU 的开发方式,NVIDIA 发起,专门面向NVIDIA 的GPU ,用于将GPU 上作为数据并行计算设备在GPU 上进行计算的发放和管理,而无需将其映射到图形API ;使用C 语言为基础,可以直接以大多数人熟悉的 C 语言,写出在显示芯片上执行的程序,而不需要去学习特定的显示芯片的指令或是特殊的结构
(2)CPU 通常使用 cache 来减少存取主内存的次数,以避免内存 latency 影响到执行效率;GPGPU 没有或只有容量很小的cache ,利用并行化执行的方式来隐藏内存的 latency ,即当第一个 thread 需要等待内存读取结果时,则开始执行第二个 thread ,依此类推;有效隐藏内存的 latency ,有效利用显示芯片上的大量执行单元 实验部分
1. 作为硬件芯片的最大集成商,Intel 致力于开发编译器、高性能库、优化软件、性能测试软件等一系列基
础软件的意义有哪些,作为Intel 公司自身有哪些优势?
答案:现在的处理器已经迈进了多核心的新纪元,但在程序方面,仍然没有很好的利用起这些多核心处理器的并行计算优势。

所以intel 致力于这些多核基础软件的开发,能帮助开发人员加速和简化程序的线程,从而推动并行计算的发展,提高多核处理器的使用率,使得多核价值得到更好的体现。

此外这易于提高Intel 的感召力,体现公司的社会责任感,并从软件提升的角度上促进多核的发展,推动硬件升级。

Intel 自身的优势:1、领先的微处理器技术,包括业界领先的架构,业界领先的制程2、得到肯定的稳定性与新式处理器卓越的节能性能 3、与硬件结合的软件
2. Intel 编译器(Intel C++ Compiler and Intel Fortune Compiler )编译后的程序,能够比普遍编译器(Microsoft
Visual Studio and GCC )更加优化的原因有哪些?
Intel 编译器可以针对特定的处理器进行优化,充分利用处理器的特性,软硬结合,使程序的运行效率达最好,此外,Intel 编译器运用了Intel 的高效优化库,可以对矩阵计算等复杂运算优化。

英特尔C++编译器的主要功能与优点:
1)支持英特尔多核心处理器以及现有的英特尔处理器与体系结构,针对最新英特尔处理器的先进优化功透明计算是一种用户无需感知计算机操作系统、中间件、
应用程序和通信网络的具体所在,只需根据自己的需求,通过网络从所使用的各种终端设备中选择并使用相应服务(例如计算、电话、电视、上网和娱乐等)的计算模式。

基本思想是把冯?诺依曼提出的计算机体系结构扩展为“把指令和数据存放在网络存储器中,并通过能满足指令和数据传输速度需要的网络调入用户端系统的CPU 上执行。

”透明计算的主要特点:1用户设备端(简称客户机)不预置任何操作系统 用户可在客户机上通过网络选择任何可在客户机上运行的操作系统2所有的应用计算都在客户机上进行,绝大部分管理和存储都在服务器上进行3客户机和服务器必须同时使用,且客户机和服务器同时使用的有效距离受通信协议限制搞安全,4高可维护性和低成本
能可以帮助产生出众的应用程序性能。

2)与针对 IA-32 的 Microsoft Visual C++、Microsoft Visual C++ 6.0 代码以及 Microsoft Visual C++ .NET 保持跨体系结构的兼容性。

3)针对最新英特尔处理器的先进优化功能可以帮助产生出众的应用程序性能。

英特尔C++ 编译器支持多种语言标准:
4)ANSI/ISO 标准,用于 C 语言编译 (ISO/IEC 9899:1990)
5)ANSI/ISO 标准 (ISO/IEC 14882:1998) 用于 C++ 语言
6)OpenMP* 规范 2.5 版
英特尔C++编译器与其他常用工具保持兼容,可以集成到广泛使用的开发环境,并且同其他广泛使用的编译器保持着特性源与二进制方面的兼容性。

集成了 Microsoft Visual Studio 2005、Visual Studio .NET* 2002/2003 以及 Visual Studio 98提供扩展 32 位和 64 位多核英特尔处理器支持
Intel Parallel Studio 主要能够实现哪些功能,其中对程序进行性能分析和热点跟踪的原理是什么?(原理未知)
1. 并行化的端到端的产品套件:易于实施,无论当前是处于任何的软件开发周期:设计、编码、调试还是测试软件; 2 前向扩展:当前开发的软件可以有效地运行在任何的未来的处理器平台上。

3. 基于标准的线程解决方案:显著提升企业在C/C++ 应用软件和 C/C++开发人员方面的投资效益。

4. 轻松走上并行化快行线:快速提升生产效率,提高在硬件和软件方面的投资回报率,将学习曲线最小化。

5. 为并行化提供多种方法:在数据和任务并行化编程方面,都可以提供相应的解决方案。

12. 能够阅读OpenMP 和MPI 程序,写出程序的执行结果
MPI 程序的四个基本函数:MPI_Init 初始化MPI 执行环境,建立多个MPI 进程之间的联系,为后续通信做准备。

而MPI_Finalize 则是结束MPI 执行环境。

MPI_Comm_rank 来标识各个MPI 进程 MPI_Comm_size 用来标识相应进程组中有多少个进程
MPI 的点对点通信: int MPI_SEND (buf, count, datatype, dest, tag, comm)这个函数的含义是向通信域comm 中的dest 进程发送数据。

消息数据存放在buf 中,类型是datatype ,个数是count 个。

这个消息的标志是tag ,用以和本进程向同一目的进程发送的其他消息区别开来.
int MPI_RECV (buf,count,datatype,source,tag,comm,status)MPI_Recv 绝大多数的参数和MPI_Send 相对应,有相同的意义,很好理解。

唯一的区别就是MPI_Recv 里面多了一个参数status 。

status 主要显示接收函数的各种错误状态。

消息管理:预定义两个进程组: MPI_COMM_WORLD 和 MPI_COMM_SELF
提供了各种管理函数: 通信域比较MPI_Comm_compare() 通信域复制MPI_Comm_dup() 通信域分裂MPI_Comm_split() 通信域销毁MPI_Comm_free() 简单的MPI 程序示例#include <stdio.h> #include "mpi.h" int main ( int argc, char *argv[] ) { int rank; int size; MPI_Init ( argc, argv ); MPI_Comm_rank (MPI_COMM_WORLD, &rank );
MPI_Comm_size (MPI_COMM_WORLD, &size );
printf ( "Hello world from process %d of %d\n", rank, size ); MPI_Finalize (); return 0; }
openMP 循环并行化#pragma omp parallel for [clause[clause …]]
for ( index = first ; test_expression ; increment_expr ){
body of the loop; }
数据的作用域子句用shared 来表示一个变量是各个线程之间共享的 用private 来表示一个变量是每一个线程私有的
默认的变量作用域是共享的
int i;int j;for (i=0; i<2; i++)
#pragma omp parallel for
for (j=6; j<10; j++) 执行结果: i=0 j=6 i=0 j=8 i=0 j=9 i=0 j=7 printf ("i=%d j=%d\n", i, j ); i=1 j=6 i=1 j=8 i=1 j=7 i=1 j=9 Hello world from process 0 of 4 (执行结果) Hello world from process 1 of 4 Hello world from process 2 of 4 Hello world from process 3 of 4 程序段对比! int i;int j
#pragma omp parallel for private(j) for (i=0; i<2; i++) for (j=6; j<10; j++) printf (“i=%d j=%d \n”,i, j );
执行结果:i=0 j=6 i=1 j=6 i=0 j=7 i=1 j=7 i=0 j=8 i=1 j=8。

相关文档
最新文档