中科院计算所的众核(ManyCore)技术研究

TextSeek多工作区管理指南:程序员如何为代码/文档建立独立搜索区 本文详细介绍了如何利用TextSeek文件搜索软件的多工作区管理功能,为程序员高效管理代码和文档。通过创建独立的搜索区域,如专属的代码区和文档区,并配置精细化的文件类型过滤与排除规则,可以大幅提升本地文件搜索的精度与速度,解决开发中的实际痛点。 阅读详情

 中科院计算所的众核(ManyCore)技术研究

 范东睿

      顾名思义,众核(ManyCore)处理器比多核(MultiCore)处理器中的处理内核数量还要多,计算能力更强大,这得益于1965年Gordon Moore预测的Moore定律在延续。如果从wikipedia上搜索ManyCore,你会得到这样的介绍:“当前的软件结构可以在当前的多核结构上得到较好的扩展,但如果超过八个处理器核,当前软件结构的扩展能力将会很差。超过八个处理器核的设计就被称为‘众核’处理器。”
        微软公司在2007年6月25日在美国西雅图召开了第一个以ManyCore为主题的Workshop,这是一个标志性的事件,与会者都是来自世界工业界的领袖和学术界的权威,讨论众核设计应如何开展。Intel正在研发的面向媒体应用领域的Larabee、IBM正在研发的面向科学计算领域的Cyclops、面向网络安全等领域的Tile64都是对众核设计的探索。微软公司于2007年11月发表了宣言《THE MANYCORE SHIFT: Microsoft Parallel Computing Initiative Ushers Computing into the Next Era》,宣布转入对众核系统软件的研究。可以看出,众核设计已经成为技术发展的趋势和学术研究的热点。
        本文将浅显地回答四个问题,这是我们开展众核设计最关心的问题,即计算所为什么要做众核设计?众核设计的技术问题是什么?适合于众核的应用是什么?计算所在众核设计上开展了哪些工作?

一、计算所为什么要做众核?
        计算所的传统优势在于以高性能计算为核心的芯片和系统设计,五十多年来几代人一直围绕这个领域辛勤耕耘,从成果到文化上都有了相当的积淀,特别是2000年后,成功研发的多款龙芯芯片更为我们在高性能计算核心技术上取得了实质性突破。众核设计恰恰可以增强我们在高性能计算领域的优势地位,以众核研究为基础的大型并行系统设计可以进一步巩固计算所在战略性、基础性、前瞻性的国立研究
所定位。
        众核设计的核心目标就是充分开发片上高性能计算能力,这是高性能计算发展的必然趋势。以Intel公司为例,在其推出双核和四核通用处理器的同时,开发了峰值性能超过Tera Flops的Polaris和Larabee,使单芯片计算能力得到几十倍的提升。虽然众核设计上的进步将有效推动我所在高性能计算领域的发展,但在众核设计的研究过程中,需要紧密围绕龙芯和曙光在产业应用中对此类众核高性能加速芯片的实际需求。
        国内系统结构研究领域的各优秀研究团队对众核设计广泛关注,2008年3月27日,复旦大学同UIUC大学的非赢利组织Gelato承办了“Shanghai Many-Core Workshop”,国内的参与者包括计算所、清华大学、国防科大、江南所、HP中国、IBM中国、Intel中国等单位的超过一百名研究人员。可以看到,很多研究机构都在开展面向众核技术的研究工作,一场面向众核设计相关技术方向的研究竞争已经展开,从自然科学基金的项目申请上就可以清楚看到这个趋势,在2006年和2007年就有二十项左右与多核和众核相关研究的申请获得批准。
        由此可见,无论从计算所的传统优势和计算所的定位,还是从技术发展趋势,以及从科研资源获取角度分析,尽快将众核研究推向深入都是势在必行。

二、众核设计的技术问题是什么?
        众核研究是一项复杂的系统性研究,完全不能简单地理解为处理器核的堆砌,分析众核结构应当以看处理器结构图作为终点,而不是起点,首要关注的是隐藏在结构图后面系统化的设计思想。下面我们从三个层次进行分析,说明众核设计所涉及的关键技术。
        众核设计的基础是摩尔定律的延续,也就是人类掌握的最先进的硅制造工艺的进步。制造工艺的进步带来了四个主要的变化:1. 集成度提高,2. 带宽受限,3. 功耗问题突出,4. 线延迟变长。这些芯片生产工艺变化直接引出了众核设计的关键问题。
        首先,芯片集成度的提高是众核设计的基本条件,这使得更多的计算资源可以集成在一块芯片上,但这种集成却也带来了硬件资源管理的困难和对资源的竞争。如何容易地将计算任务进行分割,映射到众多处理器核上?众多处理器核如何分享片上有限的存储空间?如何让众多处理器核利用有限片上传输网络传递数据,而冲突最小?如何对片上众多资源进行测试和修复?
        其次,芯片的访存带宽问题在众核设计中变得更为严峻,访存带宽的限制是众核发展的最大制约。以NVIDIA G8800 GTX为例,访存带宽为86.4GB/s,计算能力为588.8GFlops,每次计算需要2个4B宽数据,计算访存比约为55Flops/B,Stanford大学设计的流处理器Merrimac的计算访存比为32 Flops/B,随着工艺的进步,这个比例还将增大,比例越大,就意味着可在此结构上取得接近峰值性能的应用算法越少。这直接引入了一系列问题,如何让众多处理器核有数据可算?如何更充分地利用片上有限存储空间的众核间共享,以避免片外访存?如何充分利用有限访存带宽,尽量让访存通道繁忙,并能优先满足处于关键路径处理器核的访存请求?
        再有,虽然众核设计有助于提高芯片的能效(Power-Efficiency),如Intel的80核实验设计Polaris能效为16GFlops/Watt,而Intel传统超标量Clovertown设计的能效为0.35GFlops/Watt,但是不能忽视,由于众核芯片面积庞大,功耗问题依然突出。根据半导体国际工艺路线发展报告ITRS-2007的分析,在2018年,芯片的供电电压将为0.7v,而目前为1.1v,即使假设不提高设计主频,根据功耗计算公式cv2f,功耗降低仅为(1.1/0.7)2=2.5倍,但集成的晶体管数量却可以增加12倍以上,绝对功耗会有明显增加。如何在众核设计中提高能效?如何对众多计算资源进行调度管理才能最大限度降低众核设计的功耗?这些问题依然要在众核结构设计过程中寻找答案。
        最后,线延迟变长使得在众核设计中进行集中控制变得困难,如何采用更分布式的方式完成结构设计?如何在分布的结构中实现共享数据的分发传播?如何在分布的结构中实现高效的核间互斥并发操作?
        将上面根据工艺实现的变化带来的众核设计关键问题进行凝练,众核设计的主要研究内容包括并行编程模型、运行时系统、存储模型、通讯模型等。在对这些问题进行深入研究,对不同设计部分进行匹配权衡,最终凝练为完善的系统软件、运行时库,以及众核结构模型。众核结构模型只是整个系统的集中
体现。
        众核设计是一种新型的并行计算形式,传统的基于SMP或集群的并行研究成果不能直接应用,必须进行重新评价。这个研究领域有待解决的问题很多,虽然目前世界上很多研究人员都参与到该领域的研究中,但还没有找到系统解决问题的好方法,而且未来五年,众核设计会一直是研究的热点。

三、适合于众核的应用是什么?
        首先罗列了一下已有众核芯片自称适用的应用领域,包括生物计算、网络安全、虚拟现实、信号处理(GSM、MPEG-4、压缩、滤波等)、国土安全(加密解密、模式匹配、搜索等)、网络包处理、生物特征识别、图形处理、移动游戏、服务器组件和机器人学习等。从上面的列举可以看出,适于众核设计的应用很广泛,下面我们更技术化地从两个层次进行简要分析,一是应用算法本身的特性,一是结合众核处理器结构,看何种应用更适合特定众核设计,应用的特性如何同结构结合。
        应用算法本身特性主要体现在三个方面,即应用算法是否有足够的并行度,计算和访存的比例是否合适,是否强调单线程速度。如果应用算法本身难于进行并行划分,或者非常强调单线程速度,那就不适合在众核设计上进行并行化,而更适于在指令集并行性开发更好的超标量处理器上执行;如果应用算法对计算能力的需求不高,而数据处理量很大,那也不适合在众核上进行加速,因为目前众核设计最大的限制就是访存带宽。假如应用算法在这三个方面都是适合的,那就应该考虑用众核设计来加速此应用。
        接下来,就要结合众核处理器的结构特点来确定是否与应用匹配,主要考虑两个方面。一方面是结构上是否支持高效的片上同步和高效的线程管理机制,这决定着此众核设计能开发何种粒度的并行性。如果线程管理的开销很小,而同步效率很高,在不同处理器核上运行的程序段很容易在片上进行信息的共享与交换,那么就能开发程序中的细粒度并行,这是众核设计真正的优势,否则如果同步操作都需要经过内存,那么同传统的SMP设计无异,只适合粗粒度并行。比如,NVIDIA的G8800 GTX设计,虽然拥有588.8GFlops的单精度浮点峰值处理能力,但片上各节点间不能进行通讯,如果通讯必须通过内存,这就使应用范围受到了限制,若程序间有较多的相关,就无法得到良好加速效果。
        另一方面是结构上是否足够灵活以支持复杂算法的编程实现,如果结构上只支持统一控制的向量运算,那么此结构只适合于规则的运算,例如GRAPE-DR这样的设计,但这样的设计方式可以最大限度地提高处理能力,而且设计相对简单;如果结构上具有灵活性,可以支持非规则计算的计算特征,那么应用范围就更广泛,但需要尽量消除因增加灵活性而带来的开销。举例来说,像动态规划和介度中心计算,由于其依赖关系距离随着计算不断变化,其计算访存都不规整,因此只有在众核结构上支持类似线程管理、跳转执行、快速同步等机制后才能得到较好的加速效果。如果设计采用的是集中控制的方式,甚至片上存储采用的是显示编址的存储方式,那么算法在这样的结构上虽然可以做到性能可控,但编程的难度会相当大,导致设计的应用推广受限,如IBM的Cell和Cyclops设计。
        综上所述,当判断一个应用是否适合众核设计时,首先要考虑算法是否可并行化、计算访存比、是否强调单线程性能,如果这些条件满足,可以结合特定众核结构分析算法可并行化的并行粒度和非规则属性,最终判断算法是否可以在特定众核结构上得到很好的加速。

四、计算所在众核设计上开展了哪些工作?
        计算所非常重视众核设计的研究工作。前瞻研究中心努力将众核设计同生物计算等应用研究相结合,体现交叉学科优势,已经取得了一定成效。系统结构重点实验室也将多核和众核设计规划为未来五年的研究重点,努力同编译技术、操作系统研究、高可靠性和可测试性研究等工作相结合,在系统上取得群体优势。众核研究在项目上也得到了有力支持,李国杰所长负责的973重大专项项目和刘志勇研究员负责的基金重点项目都是围绕多核和众多核研究的项目,同时计算所在此研究领域上还获得了一些863探索、基金面上项目和国际合作项目的支持。
        目前,计算所在众核研究上已经取得了一定的进展。在理论方面,在存储模型一致性上证明了新的结论;在结构方面,设计了更高效的流处理众核设计和更灵活的GodsonT众核设计,在片上同步机制、数据共享和分配策略、可配置属性上都采用了新的结构设计方法; 在运行时系统软件上,结合处理器结构设计了GodRun运行时海量线程管理系统,并将学术界很有影响的CILK运行时系统移植到了众核平台上;在应用方面,结合计算所在应用研究上的积累,探索了将生物计算和传统高性能科学计算算法在众核设计上的尝试;在实验方法上,已经完成大规模FPGA系统的构建,并完成了可扩展FPGA众核模拟系统的方案设计和专利提炼。相信在未来两年经过踏实工作,会取得更有显效的成果。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fish_yu8/archive/2009/11/26/4876322.aspx

ManyCore Programming GPU: CUDA Part 介绍 矩阵乘法 原始版本 改成CUDA版本 使用shared memory 使用内存对齐 B cache blocking 去掉条件判断介绍18-645:how to write fast code中使用了CUDA,参考教材是【1】。在国外买这本书的话需要60刀,国内的话找一找就可以下到较为清晰的版本。这一部分主要是介绍CUDA的基本的写法【2】直接上CUDA的代码进行了解,然后从代码中学到需要的东 阅读详情

相关推荐

从多

处理器从多的详细叙述文章 其实“多”这个词已经流行很多年了,世界上第一款商用的非嵌入式多 处理器是2002年IBM推出的POWER4。当然,多这个词汇的流行主 要归功与AMD和Intel的广告,Intel与AMD的真假四之争,以及如今的 电脑芯片市场上全是多处理器的事实。接下来,学术界的研究人员开 始讨论未来成百上千的处理器了。有一个与多匹配的词叫片上网络 (Networks on Chip),讲的是多里的网络式互连结构,甚至有人预 测未来将互连网集成到片上这种概念了。当然,这样的名词是很吸引眼 球的,不过什么东西都得从实际出发,这篇文章也就简单地分析了为什 么有多这个事情,以及多系统的挑战。

专用芯片技术中的从Multicore到Many-Core谈体系结构和经验

您可能已经习惯了芯片系统(SoC)的multicore处理器这一概念,而现实却总是在不断变化。8月份举行的Hot Chips大会研讨中,已经清楚的表明multicore正在向many-core发展:在SoC心位置,密切相关的处理器内的数量在不断增长,从2个或者4个增加到8个、16个,甚至是很多,很多。   这种增长仅是摩尔定律发展的另一阶段,系统开发人员还是能清楚的了解这一切吗?从multicore发展到many-core是类型的变化,还是仅仅是规模的变化?这种转变能解决系统开发人员面临的问题吗?   为找到这些问题的答案,我们与一些团队进行了交流,他们已经在many-core SoC

异构系统综述

《异构系统》该篇论文由西交大的巨涛、朱正东、董小社所写。他们首先从不同方面分析对比了当前不同异构系统的特点,揭示了异构系统相对传统多并行系统的优势及其发展趋势。然后分析了异构系统编程模型以及性能优化的研究现状、所存在的问题和面临的挑战,提出了进一步的研究方向。接着对GPU 和MIC两种异构系统进行性能测试,验证了两种异构系统不同的应用特点,为用户选择具体异构系统提供参考。最后作者提出了将GPU和MIC结合的混合异构系统,分析了在该混合异构系统下必须要研究和解决的问题。

从多处理器

其实“多”这个词已经流行很多年了,世界上第一款商用的非嵌入式多处理器是2002年IBM推出的POWER4。当然,多这个词汇的流行主要归功与AMD和Intel的广告,Intel与AMD的真假四之争,以及如今的电脑芯片市场上全是多处理器的事实。接下来,学术界的研究人员开始讨论未来成百上千的处理器了。有一个与多匹配的词叫片上网络(Networks on Chip),讲的是多里的网络式互连

Linux Driver回忆录 1万+

计算机体系结构基础(七):多处理器结构

从20世纪90年代后期开始,随着半导体工艺的发展,单芯片上晶体管数目大幅增多,多处理器得到了很好的发展。多处理器(Multicore Processor)在单芯片上集成多个处理器,也称为单片多处理器(Chip Multi-Processor,简称CMP),通过聚合芯片上的多个处理器的计算能力来提高应用程序执行性能。各处理器并行执行线程(或者进程)发出读/写(load/store)访存指令,这些访问指令的执行次序如何约定,使得应用程序员可以利用这些约定来推理程序的执行结果。片上Cache如何组织?

yelvens的博客 5863

学习日记-spmv(11)

提出了一种numa感知的SpMV方法,并在Phytium 2000+处理器上对15个代表性稀疏矩阵进行了基准测试。实验结果表明,方法可以显著优于经典的OpenMP SpMV方法,生成的超图分区的数量对SpMV性能有显著的影响。

荼图的博客 321

上的数据仓库并行优化

近几年硬件逐渐被应用到数据仓库产品当中。目前主要的硬件包括以Intel SCC为代表的CPU、以Intel志强融系列为代表的协处理器、以NVIDIA和AMD为代表的GPU。本文第一章介绍目前的主要的硬件及其特性,并从性价比和通用性方面对硬件进行比较;第二章介绍目前数据仓库中典型操作符在硬件上的优化技术。 1. 主要硬件 1.1. 多CPU 多的CPU

BHQ的技术学习 2662

MIC 计算

简介 硬件架构 软件架构 编程模型 MIC Offload模式 MIC Native模式编程 MIC MPI对称模式编程 MIC 编译 编程实例 MIC平台HPC应用开发策略 MIC程序快速开发方法 适应MIC的应用特征分析 MIC并行算法设计 MIC应用高效编程 简介 Intel MIC 集成(Many Integrated Core)架构是将多个心整合在...

明月清风 2758

异构系统高性能计算架构

随着计算机技术的发展,单处理器已经难以满足高性能计算的需求,处理器成为了一种有效的解决方案。处理器是指在一个芯片上集成多个处理器心,通过并行计算提高性能和能效,处理器可以分为同构和异构两种类型,同构处理器是指所有的心具有相同的结构和功能,异构处理器是指不同的心具有不同的结构和功能,例如CPU和GPU的组合。异构系统是指由一个或多个异构处理器构成的系统,它可以利用...

weixin_49393016的博客 1258

CPU的向量化、多技术、多路技术、技术

向量化:指的是使用同一条指令同时操作多个数据; 多技术:在同一个芯片上集成多个心的技术; 多路技术:在同一个主板上集成多个CPU处理器

HPC&Geophysics攻城狮 2332

[架构之路-15]:目标系统 - 硬件平台 - 什么是多设计?多面临的问题?什么是大小设计?

处理器是仅具有单个中央处理单元 (CPU)的计算单元ALU,所有程序或软件仅在一个内上执行。多处理器由两个或多个称为“心”的处理器组成的计算组件。这些内以比单最有效的方式读取和执行程序。多处理器技术是CPU设计中的一项先进技术。它把两个以上的处理器集成在一块芯片上,以增强计算性能。CMP通过在多个CPU上分配工作负荷,并且依靠到内存和输入输出(I/O)的高速片上互联和高带宽管道对系统性能进行提升。CMP(单芯片多处理器)技术来替代复杂性较高的单线程CPU。

文火冰糖(王文兵)的博客 2366

CPU与多CPU的区别

1、单CPU 1.1 工作原理 工作原理:单CPU较为死脑,在通电时该CPU就会执行存储块中的指定地址的指令,如果你想要执行内存块其他地方的代码必须调整总线位置才可以让其执行。单CPU就相当于阻塞程序,在工作期间只能执行某一个程序! 每一个CPU都需要有较为独立的电路支持,有自己的Cache,而他们之间通过板上的总线进行通信。 假如在这样的架构上,我们要跑一个多线程的程序,不考虑超线...

zhanghui962623727的博客 2万+

关于ManyCore的一些讨论

T-MCer 说:Bad News:虽然我们认为采用ncc NUMA来解决cache coherence的问题,但目前还很难找到有相关研究认为未来的multi core应该取消cache coherence的限制,do you have any info.?Ray 说:我昨天看Tilera(100core)的产品说明,他们也保证cache一致性:Tileras D

余璜的技术博客 2701

从多:把困难推给软件

参考网址:http://blog.sina.com.cn/s/blog_4843d0550100an91.html 多处理器日益普及,现在的Intel商用处理器,很多都是具有双、四的了。许多权威都预测,未来的处理器,很可能是一种的处理器,处理器上集成数十个、数百个甚至更多的处理器心。但是这样一种发展趋势真的能成为广泛应用的主流么?   在“发展趋势浅析”http://w

ZhangZX的专栏 4465

多个处理器和多处理器的区别

最近遇到了一个让人很是疑惑的问题,然后写出来供大家解疑: 多个处理器&多处理器? 多个处理器:多个单处理器,就是说电脑和处理器有多个,但是这个电脑的处理器是单的; 多处理器:单个多处理器,也就是说电脑有一个处理器,但是这个处理器是多的;         当然他们之间有这个很大的区别,对于这两个疑点,或许你一直是这么认为的(对于时间的执行效率有区别),但是更重要的

Kevin_YZLong的博客 2万+

Manycore Programming: CUDA 1

和多处理器平台的区别 作用的区别 架构的区别 软硬件的内在模型 应用的语义 CUDA的存储操作 同步 CUDA平台在之前介绍了OpenMP的多编程,这一节主要讲得就是CUDA的多处理器编程。多和多处理器平台的区别作用的区别多平台的指令以及控制更加复杂,可以在单个周期实现很简单的操作。优化的时候是针对单个的线程,是对线性代码模型的加速。多处理器更多的资源是在计算部分,实现的是减轻单个处理器的

I AM BACK 1081

Manycore Programming: CUDA 2

最优存储设计 SOA vs AOS 存储对齐 使用共享存储 存储bank 冲突 补全 最大化指令吞吐量 branch divergence optimizing to mix 最大化调度吞吐量 使用intrinsic 函数提高performance 优化算法 数据并行算法 Map Reduce Scan 数据并行算法的步骤 compact压缩 find unique找到独特的项 建立flag arr

I AM BACK 835

与多个CPU啥区别?

与多个CPU啥区别呢?我们首先来了解下二者:     何为多CPU?简单理解就是,我们将多个心装载一个封装里,让用户理解成这是一个处理器。这样好处就是原本运行在单机上跑的程序基本不需要更改就能够获得非常不错的性能。多心发展趋势也是英特尔一直坚持的方式。      何为多个CPU运行呢?了解服务器的人都知道有单路,双路,多路之分,而ARM针对服务器市场推出的处理器也是呈现这种方式,最终

春华秋实 8035
下一篇: [转]应用程序在Linux上的执行过程
fish_yu8
博客等级 码龄19年 2粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值