多核体系结构与并行编程模型计算机科学导论件学习教案.pptx
上传人:王子****青蛙 上传时间:2024-09-13 格式:PPTX 页数:43 大小:296KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

多核体系结构与并行编程模型计算机科学导论件学习教案.pptx

多核体系结构与并行编程模型计算机科学导论件学习教案.pptx

预览

免费试读已结束,剩余 33 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

课程内容讲座提纲对称(duìchèn)多处理器对称(duìchèn)多处理器的体系结构几个概念的粗略解释任务:一般性的抽象术语,指由软件完成的一个活动。例如,矩阵(jǔzhèn)分块乘就是把矩阵(jǔzhèn)乘分成多个任务,以便于在对称多处理器上并行执行这些任务进程:任务在程序中的对应物,它有自己的数据和代码,需要在处理器上运行直至结束。进程是操作系统进行资源分配和调度的独立单位线程:是把进程细分出现的实际运行单位,线程是进程中一段顺序执行的语句序列。把进程分成若干线程是为了提高进程执行过程中的并行性。线程是操作系统调度的基本单位下面未严格区分进程和线程几个概念的粗略解释并行(parallel):多个(duōɡè)可以同时执行的任务,在多处理器上同时执行并发(cuncorrent):多个(duōɡè)可以同时执行的任务,在单处理器上交错执行并发是逻辑上同时发生,而并行是物理上同时发生。下面不区分并行和并发对称(duìchèn)多处理器对称(duìchèn)多处理器的体系结构基本知识基本知识基本知识基本知识基本知识基本知识内存(nèicún)一致性模型内存(nèicún)一致性模型顺序一致(yīzhì)性模型比严格一致(yīzhì)性弱的模型在多处理器共享内存情况下,每个处理器执行的单个线程严格按照程序规定的顺序逐语句地进行内存访问操作比顺序一致(yīzhì)性还弱的统称为弱内存模型(不同情况有不同名称)大多数程序员假定并行程序的运行满足顺序一致(yīzhì)性,但现实中几乎所有的并行程序都在某种弱内存模型下运行,而且不同的并行语言和处理器的内存模型不同顺序一致性模型例:互斥使用临界区的并行线程若两个线程严格按照给出的语句顺序逐条执行,则它们能实现(shíxiàn)互斥功能,因为r1和r2不可能同时为0现实中,编译器和处理器内部进行的优化都会导致内存操作的实际顺序和代码中的语句顺序不一致,使得两个条件判断都为真,两个线程都进入临界区内存一致性模型的重要性它作为系统实现和程序员之间的接口,对处理器体系结构的实现、并行语言的实现、并行程序的开发(kāifā)和验证都有重要意义以并行语言的设计和实现为例编译器的优化算法会调整源程序中的内存操作顺序,使得目标程序和源程序的顺序不一致目标程序的执行顺序又可能被处理器进一步改变并行语言的设计和实现必须考虑到这两种情况及其效果的叠加,对源程序可能表现出的行为进行准确描述(并行语言的内存模型),便于正确编程编程语言内存一致性模型的现状由于(yóuyú)优化算法的多样性,编程语言内存模型比体系结构的内存模型复杂Gosling等为第一版Java语言给出的内存一致性模型,无法支持常用的优化算法,是一个失败的模型Manson等给出的Java模型,虽被语言新标准所采纳,但模型十分晦涩,是Java语言中最复杂部分,极少有人能正确理解其含义Boehm和Adve试图为C++提供一个简单的模型,但很多地方有歧义或不清晰共享内存并行(bìngxíng)编程模型共享内存并行(bìngxíng)编程模型共享内存并行(bìngxíng)编程模型共享内存并行(bìngxíng)编程模型共享内存并行(bìngxíng)编程模型共享内存并行(bìngxíng)编程模型共享内存并行(bìngxíng)编程模型条件变量例:生产者/消费者问题一个典型的同步问题也称有限缓冲区问题生产者向缓冲区中写入数据(shùjù)消费者从缓冲区取得数据并对数据(shùjù)进行操作生产者和消费者并行执行条件变量(biànliàng)右边是生产者线程,条件变量(biànliàng)C使用锁L来完成对共享数据的访问,可对条件变量(biànliàng)C执行3种原子操作(LC的初值为false)1.wait(L):释放自身持有的锁并处于C的等待队列。执行完毕时,锁已被其他线程获得条件变量右边是生产者线程,条件变量C使用锁L来完成对共享数据(shùjù)的访问,可对条件变量C执行3种原子操作(LC的初值为false)2.signal(L):发信号,允许等待C的一个线程往下执行。该操作完毕后,锁仍然被发信号的线程持有条件变量右边是生产者线程,条件变量C使用锁L来完成对共享数据的访问,可对条件变量C执行3种原子操作(LC的初值为false)3.broadcast(L):发信号,允许所有(suǒyǒu)等待C的线程往下执行。该操作完毕后,锁仍然被发信号的线程持有生产者/消费(xiāofèi)者问题voidproducer(){voidconsumer(){while(1){