没有合适的资源?快使用搜索试试~ 我知道了~
NNT:2016年SACLS295博士论文从l’Université准备好了l’Université第580号博士学校信息与通信科学与技术博士专业:计算机科学一种自动和半自动适应程序优化通过M. LénaïcBAGNÈRES论文于2016年9月30日在伊维特河畔吉夫发表并答辩:评审团组成:Yannis MANOUSSAKIS,南巴黎大学教授,评审团主席Erven ROHOU,Inria研究主任(RENNES-BRETAGNE ATLANTI qUE)报告员Corinne ANCOURT,帕里斯国立............................................................................................................. 高等矿业学院讲师兼研究员Patrick CARRIBAULT,CEA检查员研究工程师Christine EISENBEIS,Inria(SACLAY-ILE-DE-FRANCE)研究主任,论文Cédric BASTOUL,斯特拉斯堡S大学教授,论文谢谢你几个月后,我终于抽出时间J’ai découvert l’informatique avec Jean-Paul G 在我们的讨论过程中主板-处理器-内存-硬盘驱动器、不同类型的存储和数据压缩之间的交互在配备超线程的奔腾4发布之前,多处理器的问题就已经得到了解决J’ai commencé à bidouiller avec 在几年内,我们建立了一个游戏服务器,编写了PHP和SQL,并建立了一个网站。一点编程,一点GNU/Linux和一点网络就足以让我开始学习计算机科学J’ai commencé ma première semaine à l’IUT d’O在这两年里,在本科期间,在我与Joël FALCOU的硕士课程结束时,我遇到了J’ai commencé cette thèse sous la direction de Cédric B在团队中如果没有泰姬·穆罕默德·汗和Oleksandr Z inenko,这一论点就我最大的感谢是Olek-sandr。我在不同的会议上遇到了许多非常有趣的人,特别是在"多面体学校"和"法国汇编日"。多面体编译社区是非常受欢迎的。在这些活动中,总的来说,对我们论文的评论是高质量的。我还要感谢我的家人(Jean-Louis BAGNÈRES、Agnès BROUSTAUT、Maïlys BA-GNÈRES和StéphanieTORTIGUES),他们对我的论文有着非常积极的反馈;MarineLANDRIEUX11和她的家人每天都支持我;EmilieMAR qUEBIELLE阅读了我的论文,寻找错误和其他错别字。自2016年10月以来,我一直是NUMSCALE12的一员,NUMSCALE 12是一家年轻的公司,拥有与性能和软件优化相关的有趣产品和项目1. http://dvdght.toile-libre.org/2. http://icps.u-strasbg.fr/~bastoul/3. https://www.lri.fr/~de/4. https://www.lri.fr/~cecile/communications-english.html5. https://www.lri.fr/~falcou/6. http://www-soc.lip6.fr/~lacas/7. http://warppipe.net/blog/pages/8. https://ozinenko.com/9. https://team.inria.fr/pacap/fr/members/rohou/10. http://www.cri.mines-paristech.fr/people/ancourt/11. http://marine-landrieux.appspot.com/12. https://www.numscale.com/自动和半自动程序优化调整关键词:多面体编译、程序编译器在开发时间和应用程序性能之间提供了很好的折衷目前,很难考虑许多现有的配置和许多参数,这些配置和参数在编译时是未知的,因此只能在运行时使用基于多面体编译技术,我们提出了两种互补的解决方案来帮助解决这些问题。在第一部分中,我们介绍了一种自动化技术,它既有静态的,也有动态的,通过使用动态自动调谐提供的可能性来这个全自动的解决方案会抓取许多版本,并选择与编译最相关的版本要执行的版本的选择是动态完成的,由于可互换版本的生成,成本很低:一组转换允许从程序的一个版本切换到另一个版本,在第二部分中,我们为用户提供了一种与多面体编译器交互的为了理解和修改优化器所做的变换,我们将影响迭代排序的任何循环变换从内部使用的多面体表示转换这是程序员可以理解和修改的通过为开发人员提供使用这些半自动编译器工具检查、修改、改进、重放和构建复杂优化的能力,我们打开了编译器的一个黑匣子:多面体编译器程序优化的关键词 多面编译、程序优化编译器通常在生产力和单线程性能之间提供了一个很好的权衡,这要归功于广泛的可用自动优化。然而,当在具有深度内存层次结构的并行体系结构的上下文中解决计算密集型应用程序的部分时,它们仍然是脆弱的,而深度内存层次结构现在无处不在。随着云计算的出现,最近向台式机和嵌入式系统的多核架构的转变提出了运行时环境对性能影响的问题首先,我们提出了一个静态动态编译器优化技术,它生成基于循环的pro-gram,具有动态自动调谐功能,开销非常低。我们的策略引入了可切换调度,这是一系列程序转换,允许在优化版本之间切换,同时仍然处理有用的计算。本文介绍了基于可切换调度生成自适应程序的技术及其在动态环境中保持高性能的能力的实验证据。其次,我们提出了一种新颖的方法,喜欢打开多面体编译引擎,为几个现代编译器的循环级优化和并行化框架基于最先进的程序多面体表示,我们提出了将可理解的语法转换序列转换到内部多面体编译器抽象和从内部多面体编译器抽象转换的方法。这种与高级优化框架交互的新方式为专业语法学家提供了宝贵的反馈,使他们能够设计、重放或微调循环级编译器优化。摘要本论文的重点是这些优化可以是静态的,即第一种自动、静态和动态方法侧重于这些由多面体编译器从要优化的程序生成,以便在正确的第二种半自动和静态方法以任何开发人员都可以理解、重放和修改的形式呈现多面体编译器所做的优化,硬件体系结构以越来越低的相对功耗提供越来越高的计算能力,但正变得 不幸的是,对于绝大多数开发人员来说,很难或不可能如果执行速度被视为一个特征,那么在许多情况下,它并不总是必要的通常,将此任务留给自动或半自动工具是合理的-任何不精通优化技术的程序员都可以访问编译器在开发时间和应用程序性能之间提供了很好的折衷目前,很难考虑许多现有的配置和许多参数,这些配置和参数在编译时是未知的,因此只能在运行时使用基于多面体编译技术,我们提出了两种互补的解决方案来帮助解决这些问题。在第一部分中,我们介绍了一种自动化技术,它既有静态的,也有动态的,通过使用动态自动调谐提供的可能性来这个全自动的解决方案会抓取许多版本,并选择与编译最相关的版本要执行的版本的选择是动态完成的,由于可互换版本的生成,成本很低:一组转换允许从程序的一个版本切换到另一个版本,在第二部分中,我们为用户提供了一种与多面体编译器交互的为了理解和修改优化器所做的变换,我们将影响迭代排序的任何循环变换从内部使用的多面体表示转换这是程序员可以理解和修改的通过为开发人员提供使用这些半自动编译器工具检查、修改、改进、重放和构建复杂优化的能力,我们打开了编译器的一个黑匣子:多面体编译器这两种互补的方法有助于开发更鲁棒的自动和半自动优化。可互换版本的使用允许动态和自动地执行最佳优化。在开发人员需要更多控制的情况下,提供了一种与多面体编译器交互的简单方法然后,开发人员可以利用9目录1导言111.1计算机处理器121.1.1计算机体系结构141.1.2硬件-软件并行编程的性151.1.3墙181.1.4墙外181.1.5软件开发成本191.1.6结论201.2文件的组织201.3捐款212多面体汇编232.1示例242.2多面体模型262.2.1关系262.2.2迭代域2.2.3指令实例的排序2.2.4存储器访问322.3OpenScop32格式2.4从程序中352.5多面体编译器平台372.6结论383关于多面体优化器极限的讨论393.1示例403.2结论434混合动力优化454.1动态静态优化454.2可互换版本474.2.1可互换实例的迭代域4.2.2生成多版本代码494.2.3执行情况514.3相关版本的选择514.4实验结果524.5相关工作544.6结论555半自动转换575.1代码转换595.1.1重新排列说明615.1.2合并两个循环615.1.3分配两个循环625.1.4翻转循环645.1.5移动指令645.1.6倾斜指令655.1.7扭曲指令67自动化和半自动化程序优化的适应性10/118T目录5.1.8将实例与指令685.1.9使实例更接近指令695.1.10 交换两个环705.1.11 分解循环715.1.12 线性化循环725.1.13 从指令中删除实例735.1.14 对指令的实例进行分组745.1.15 并行化指令765.2变换的性质775.2.1关于迭代域不变性的讨论5.2.2有效性和合法性785.2.3完成转换785.3相关工作825.4结论836多面体优化器的结果856.1可逆变换。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...866.2协调调度关系... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...876.3寻找α维的系数。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...896.4用户与编译器的交互。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...926.5相关工程。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ... ... ...926.6结论。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ... ... ... ... ... ...937结论&展望95A C语言编程99A.1控制结构。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......100A.1.1分支机构100A.1.2循环100A.2 存储器访问............................................................................................................................................101B周镜105参考书目11311×第一章简介总结1.1计算机处理器121.1.1计算机体系结构141.1.2硬件-软件并行编程的性151.1.3墙181.1.4墙外181.1.5软件开发成本191.1.6结论201.2文件的组织201.3捐款21在当今世界,计算能力是最重要的许多域需要例如,需要超级计算机来模拟现实、研究生物、创建虚拟世界、设计人机界面、通过处理大量信息做出决策这种能力使我们能够解决工业、科学和军事挑战模拟真实的。最能说明问题的例子是天气预报。在模拟和后处理过程中需要大量的计算。即使获得了越来越多的数据,控制大气的复杂方程也变得越来越精确,但微小的变化可能会进行了不同尺度的模拟后处理自2014年以来,法国气象局的这一计算能力与2014年6月TOP5003榜单中排名第41位的最强大(非分布式)机器所拥有的计算能力相当。研究活人。像BOINC4这样的项目允许要解决的问题将发送到连接到Internet的计算机计算完成后,可以返回结果。有不同的项目可供选择。它们对科学研究很有用,例如,2016年初,平均计算能力为11、 16、10、15翻牌。该能力分布在大约240,000台计算机上。创建虚拟世界。越来越逼真的视频游戏、电影特效和完全由计算机生成的动画长片是我们日常生活的一这些应用程序需要大量的计算。例如,2016年上映的动画电影《此外,这些应用程序要求1. 每秒浮点运算数2. http://www.meteofrance.fr/nous-connaitre/activites-et-metiers/les-supercalculateurs-de-meteo-france3. https://www.top500.org/4. http://boinc.berkeley.edu/5. http://variety.com/2015/film/asia/jeffrey-katzenberg-kung-fu-panda-1201475355/C第1章. I内导管1.1.计算机处理器自动化和半自动化程序优化的适应性12/118越来越多的计算,以获得越来越多的真实性和准确性。需要两个图像而不是一个图像的三维渲染处理大量信息。在一个日益集中的互联网上,一些公司,如谷歌、Facebook或亚马逊背后的公司,正在收集并必须处理越来越多的数据。随着例如,移动电话上可用的大多数GPS的路线不是在电话上计算的,而是在在线服务器上计算的,该在线服务器通过网络传送其结果,即路线解决工业、科学和军事挑战。随着问题建模的日益正确和可用的高计算能力,许多挑战,如天气预报,已经得到解决。在许多情况下,这些挑战只能部分解决,而新技术和新用途对计算的要求越来越高。本章从计算机的起源开始介绍当今的计算机1.1计算机处理器1834年,查尔斯·B·阿贝奇发明了分析机。它虽然这台机器的原型从未完成,但它被认为是这台分析机完全是机械的,有50000个部件,质量为3吨(3000公斤)。计算精度为50个十进制数,可以记住1000个单词。Ada LOVELACE与Charles BABBAGE密切合作,参与了分析机器。通过将后者的想法形式化,她编写了一个非常详细的算法,今天被IBM的Harvard Mark I9这台机器是由霍华德·H.艾肯大学于1944年交付哈佛大学。为了给哈佛大学的Mark I编程,程序员们使用了穿孔卡片。Grace HOPPER是开发程序的团队成员她被认为是最GraceHOPPER也因在1952年创建了第一个编译器而闻名(事实上,它更多的是一个链接编辑器,而不是C’est elle quichoisira le terme de如果我们把计算机定义为一种电子的、数字的、可编程的机器,它运行程序(存储在内存中)来进行计算,那么查尔斯·B·阿贝奇的分析机并 它由17,468个真空管组成。这台30吨(30,000公斤)的机器分布在167平方米的面积上,于1946年投入使用在一秒钟内,他可以执行5000个简单的加法或减法,或385个乘法,或40个除法,或3个平方根。为了对这样的机器进行编程并获得结果,必须操纵开关并在计算机的不同单元之间连接电缆6. https://fr.wikipedia.org/wiki/Machine_analytique7. 他的名字被用来命名Ada8编程语言9. https://fr.wikipedia.org/wiki/Harvard_Mark_I10. https://en.wikipedia.org/wiki/History_of_compiler_construction11. https://fr.wikipedia.org/wiki/Electronic_Numerical_Integrator_Analyser_and_Computer12. 这台机器大约有一半的时间在运行,因为几乎每天都有几个真空管燃烧。这是由于机器打开或关闭时的热应力C第1章. I内导管1.1.计算机处理器自动化和半自动化程序优化的适应性13/118ENIAC的后继者虽然它的设计始于1944年,但它是在1949年问世的。它使用二进制模式,不像以十进制表示的ENIAC。它使用6000个真空管,重近8吨(7850公斤),分布在45.5平方米的土地上。它JohnVON NEUMANN参与了EDVAC的设计。程序的数据和指令存储在相同的结构中。计算机由四个部分组成。L’unité arithmétique et logique (abrégé UAL, 存储器包含程序和数据。I/O允许这种所谓的冯·N·欧曼架构仍然是当今计算机所使用的。这些体系结构的编程要么直接用机器语言(二进制)完成,要么在汇编语言可用时用汇编语言完成1949年投入使用的曼彻斯特马克114也使用了它是第一个使用寄存器的芯片,寄存器是处理器内部的一种存储器 这个自动代码可以被认为是第一个编译的语言编译器所达到的性能问题已经被提出:在用户手册1947年,约翰·B·阿丁(John BARDEEN)、威廉·S·霍克利(William SHOCKLEY)和沃尔特·B·拉坦(Walter BRATTAIN)发明了晶体管17。Tran- sistor可用于更换真空管它有很多它更小、更坚固、更快、功耗更低。第一个使用晶体管的消费类处理器是它由2300个晶体管组成,性能与ENIAC相当其时钟频率L’écriture d’un programme se faisait en assembleur1957年,John B.ACKUS在IBM领导了一个团队,花了两年多的时间,以相当于18个人一年工作量的成本,开发了第一个用于Fortran的编译器,Fortran是第一种该编译器在1954年发布的IBM 704 20上运行它在他的文章《FORTRAN自动编码系统》21中,从"我们必须生产出和人类编写的程序一样好的程序。"它还指出,对于大多数程序,超过90%的时间花在设计、编写和调试程序上,而执行程序只需要很短的时间。在1956年的《程序员参考手册》中,还宣布"用FORTRAN编写的程序将接近于与优秀程序员编写的程序随着每一个新的处理器,处理器的计算能力都有了很大的发展。2015年发布的最新产品之一该处理器包含34亿个晶体管,表面积为246mm2。这些晶体管分为10个超线程计算内核,总共20个线程。它们的频率在3和4GHz之间。此处理器的峰值(最大)性能为1120 gflops。13. https://fr.wikipedia.org/wiki/Electronic_Discrete_Variable_Automatic_Computer14. https://en.wikipedia.org/wiki/Harvard_Mark_I15. https://en.wikipedia.org/wiki/simplified_coding_system16. https://en.wikipedia.org/wiki/Autocode#Glennie.27s_Autocode17. https://fr.wikipedia.org/wiki/Transistor18. https://fr.wikipedia.org/wiki/Intel_400419. http://www.e4004.szyc.org/20. https://en.wikipedia.org/wiki/IBM_70421. http://archive.computerhistory.org/resources/text/Fortran/102663113.05.01.acc.pdf22. http://archive.computerhistory.org/resources/text/Fortran/102649787.05.01.acc.pdf23. http://ark.intel.com/fr/products/94456/Intel-Core-i7-6950X-Processor-Extreme-Edition-25M-Cache-up-to-3_50-GHz24. hardware.fr/news/14643/intel-lance-i7-bdw-e-i7-6950x-tete.htmlC第1章. I内导管1.1.计算机处理器自动化和半自动化程序优化的适应性14/118下一节将回顾1.1.1计算机体系结构本节介绍了两个主要的变化,使第一个是第二种是计算核心(允许单独运行程序的物理单元)的复制这两项改进都发生在计算机的处理器上重新评估的摩尔定律25是基于戈登的经验观察的预测。E. MOORE,英特尔联合创始人。摩尔定律预测,处理器上的晶体管密度每两年翻一番。这种经验推断被证明是相当准确的。因此,计算机的峰值功率变得越来越高。我们可以将第一次是从1971年到2004年。在此期间,处理器的频率从0.000740 GHz(Intel 4004)增加到3.2 GHz(奔腾4)。第二个时期开始于2005年,英特尔的奔腾D和AMD的Athlon 64 X2的到来,标志着消费者从1971年到2004年,晶体管的数量和处理器的频率呈指数级增长对于运行速度不够快的受计算能力限制的应用程序事实上,对于其他受内存访问限制的应用程序,由于缓存的出现和改进,它们的运行速度L’évolution与处理器内部的计算速度相比,RAM的访问时间非常长,而不是此内存是缓存内存1985年推出的Intel 8038626处理器支持在1989年发布的下一个处理器8048627包括一个用于数据和指令的统一内部高速缓存(1级,称为L1其大小为8 kio。可能存在第二个L2高速缓存,这是一个外部高速缓存,随着晶体管小型化的继续,在处理器中留下了更多的空间; 1997年,奔腾II28将 L2高速缓存集成到处理器中,L1高速缓存增加到32 kB(16 kB用于数据,16 kB用于指令)。2005年,奔腾4包括高达200万MB的L2高速2010年,由于该处理器是具有4个内核的多核处理器,L3高速缓存是外部的,大小为8 MB。最后,我们之前看到的i7-6950X仍然具有相同的L1和L2内核缓存大小。它的L3缓存是2500万。L’évolution 在不同代的前代产品中,越来越多的晶体管组成了它们同时,在处理器外部的高速缓冲存储器可以集成到处理器内部,出现了不同级别的缓存目前,L1和L2高速缓存是内部的,而L3高速缓存(当存在时通常,有两个L1高速缓存:一个用于数据,一个用于指令。L1高速缓存不会在不同的内核之间共享:每个内核都有自己的L1高速缓存如果存在L3高速缓存,则它在不同的内核之间共享,并且每个内核都有自己的L2高速缓存如果L3高速缓存不存在,则L2高速缓存在直到25. https://fr.wikipedia.org/wiki/Loi_de_Moore26. https://en.wikipedia.org/wiki/Intel_8038627. https://en.wikipedia.org/wiki/Intel_8048628. https://en.wikipedia.org/wiki/Pentium_II29. http://ark.intel.com/products/48496C第1章. I内导管1.1.计算机处理器自动化和半自动化程序优化的适应性15/118-Herb SUTTER在他的文章《The Free Lunch Is Over》中解释了为什么CPU频率的改进不能继续下去。在英特尔2004年年中的最初计划中,计划使用4GHz处理器,但在2004年底被放弃。主要原因是由于处理器产生的热量的耗散问题事实上,频率的增加本身并不是一个问题,但是安装在这种处理器上的冷却系统对于消费类例如,在2006年,一个处理器被安装到500 GHz,这要归功于一个使用液相氦(269 ° C)的冷却系统由于处理器的频率不遵循摩尔定律(并且晶体管的数量继续减少),处理器设计者不得不考虑新的架构。后者是并行体系结构,目前存在于包括移动电话在内的所有消费类自2005年以来,消费类处理器已经配备了多个计算内核。C’est un peu comme 与直接影响性能的频率增加不同必须使用并行编程以软件方式考虑这些新体系结构。1.1.2硬件适用性-软件并行编程L’adéquation在本节中,我们高速缓存通过更快地访问数据来当我们访问后者时例如,在只有一个高速缓存的情况下,当读取数据时与读取的数据相邻的数据也被加载到高速缓存行如果紧接着读取下一个数据,则访问时间非常快,因此,不需要对主存储器进行访问。要利用缓存,您必须考虑位置。有两种记忆定域:空间定域和时间定域。空间局部性。当程序访问一个数据时,它必须访问内存中的这些数据将已经在缓存中,因此访问速度很快。这些负载由设备执行另一方面,由软件以连续的大多数表格浏览可以"以正确的方式"进行,但对于某些算法或某些数据结构(如链接列表或图形)时间局部性。当程序访问数据时,它会多次重新访问该数据,并且距离足够近,以便该数据仍然存在于缓存中。在这里,也Tilling是一种经典的代码转换,用于改善数据的时间局部性,从而利用高速2003年,英特尔的一些奔腾4一个处理器被视为两个逻辑内核根据应用程序的不同,这允许更有效地同时管理多个程序,从而在内部,不同的处理器资源得到了更好的利用:减少了高速缓存缺陷的数量,并且更容易用独立的指令填充管道。不幸的是,特别是当应用程序的性能30. http://www.gotw.ca/publications/concurrency-ddj.htm31. http://ieeexplore.ieee.org/xpl/articleDetails.jsp?编号=164482932. https://en.wikipedia.org/wiki/Hyper-threadingC第1章. I内导管1.1.计算机处理器自动化和半自动化程序优化的适应性16/118内存访问2005年发布的下一代处理器引入了多核处理器在此体系结构中,有多个物理内核,每个内核都有自己的计算单元和L1高速缓存。这些多核处理器存在于我们所有的机器中,包括我们的手机。因此,了解如何对此类体系结构进行编程以充分利用其改进和性能至关重要。对于大多数开发人员来说,这仍然是一项复杂的任务并行性。存在几种形式的并行性有些主要由硬件处理,而并行性允许以最佳方式位级并行性。即使当处理器计算简单的加法时,它也可以将该运算分解为不同的步骤并并行执行这些步骤。像前向携带加法器33与前向携带选择加法器34相结合的技术允许这样做,尽管抑制传播产生了依赖性。该技术由Charles B. ABBAGE所知,并于1957年由IBM实现。这种基本的并行性使得即使这种并行性完全由硬件处理,软件也可以选择、重新排列和分解指令,以便硬件可以更有效地执行指令。指令的并行性也由硬件自动处理的第二种并行性是指令并行性该流水线的灵感来自装配线的工作方式,并于1961年首次用于指令分为几个步骤(例如:读取指令、解码指令、执行、内存访问和将结果写入寄存器)。当一条指令的一个步骤被执行时通常,一个步骤需要一个周期。一旦管道已满,则在每个周期执行一个这是一个理想的情况。在实践中,可能会出现问题。例如,在分支期间在这里,任务的并行性。随着实际上,处理器中可用的不同内核的使用对于应用不是自动的。必须以软件的方式考虑它们 为了有效地使用不同的内核,必须进行并行编程,即使用多个有多种解决方案可供选择。可以使用C pThread36库、2011标准的stan-dard C库(可选特性)、std::thread(来自stardard C++库)、OpenGL37或MPI38对线程进行编程。 前三个线程pThread、OpenGL和std::thread允许您创建和操作线程。MPI允许您创建和操作进程。与前三种一样,MPI允许对多核架构以及多处理器或多计算机系统进行编程。我们谈论的是任务的并行性。数据的并行性。2007年,英伟达发布了GPGPU39(图形处理单元通用计算),可通过其CUDA40开发套件进行编程。这些体系结构可用作加速器卡如果缓存一致性管理、指令转换和重组等功能,甚至允许33. https://en.wikipedia.org/wiki/Carry-lookahead_adder34. https://en.wikipedia.org/wiki/Carry-select_adder35. https://fr.wikipedia.org/wiki/IBM_Stretch36. https://fr.wikipedia.org/wiki/Threads_POSIX37. https://fr.wikipedia.org/wiki/OpenMP38. https://fr.wikipedia.org/wiki/Message_Passing_Interface39. https://fr.wikipedia.org/wiki/General-purpose_processing_on_graphics_processing_units40. https://fr.wikipedia.org/wiki/Compute_Unified_Device_ArchitectureC第1章. I内导管1.1.计算机处理器自动化和半自动化程序优化的适应性17/118×和有效连接的能力都被移除了。这些单元不执行算术和逻辑计算,占用了90%以上通过释放它们所占据的空间,可以多次复制占用不到5%空间的例如,2015年发布的NVidia Titan X41卡拥有3072个CUDA内核。另一方面,对这些卡进行编程非常复杂。OpenCL42是对这些架构进行编程的跨平台标准,但每个内核执行相同的代码。但是,由于内核的简化,这些体系结构主要针对执行常规计算的应用例如,两个内核不可能执行不同的指令:如果代码包含一个分支,则将条件评估为true的内核执行相应的代码,而其他内核等待;然后,它们将等待,而其他内核执行与评估为false的条件相GPGPU以外的加速器板具有2010年,英特尔发布了第一款至强Phi43。此主板包含32个处理器,每个处理器有4个内核(总共128个内核)。这些内核的时钟频率为1.2 GHz,与大多数GPGPU不同,它们具有高速缓存层次结构2013年,至强披Knights Landing44集成了72个四核(288个内核)。为了对该体系结构的不同内核进行编程,我们使用线程(任务并行)。每个内核都支持AVX-512矢量指令,用于处理每16个数据包(数据并行)的单精度32位浮点运算数据并行性早在GPGPU之前就存在了,并且在传统处理器中已经存在了很长时间。AVX-512矢量指令集这组矢量在MMX和AVX-512之间,有SSE 46(流MID扩展)指令集它代表单指令多数据。例如,SSE2于2003年发布,允许每4个数据包处理32位单精度浮点数。最后一个例子是AVX,它在2011年发布,允许处理每8个包的32位单精度浮点数所有最新的处理器都有为了利用这种并行性,我们可以直接使用机器的矢量指令集来生成不可移植的程序,或者使用高级库(如Boost.SIMD 47),或者调用自矢量(如编译器中嵌入的自矢量)特定并行性。根据定义,这种平行性是特定的。它不是它这些芯片在图形卡和移动电话中非常普遍例如,它们允许解码视频流或在捕获图像之后直接应用图像处理过滤器这种并行是非常有效的和低功耗的,因为它是为它设计的硬件,它负责执行两个主要的芯片系列是FPGA48(现场可编程光栅阵列)和ASIC49(专用集成电路)。ASIC是固定的,而FPGA可以重新配置。获得良好性能的两个关键点是数据局部性和并行性。应用空间和时间局部性原理允许充分利用高速缓存存储器的优点这些改进可以是自动的,但有时也可能需要重组程序的内存访问自从在所有消费者机器中引入并行体系结构以来因此,有必要修改应用程序并引入新的并行编程范例,同时不忘记高速缓存的操作我们谈论的是41. http://www.tomshardware.fr/articles/nvidia-geforce-gtx-titan-x-gm200,2-2370.html42. https://fr.wikipedia.org/wiki/OpenCL43. https://en.wikipedia.org/wiki/Xeon_Phi44. http://wccftech.com/intel-xeon-phi-knights-landing-features-integrated-memory-500-gbs-bandwidth-ddr4-memory-suppor45. https://fr.wikipedia.org/wiki/MMX_%28jeu_d'instructions%2946. https://fr.wikipedia.org/wiki/Streaming_SIMD_Extensions47. https://isocpp.org/blog/2014/02/nt2-boost.simd48. https://fr.wikipedia.org/wiki/Circuit_logique_programmable49. https://fr.wikipedia.org/wiki/Application-specific_integrated_circuitC第1章. I内导管1.1.计算机处理器自动化和半自动化程序优化的适应性18/1181.1.3墙如果处理器中的晶体管数量能够遵循摩尔定律,事实上,晶体管的雕刻精细度越来越先进。1971年,英特尔4004上的晶体管尺寸为10µm。1985年,英特尔80386的尺寸发展到1µm在2004年的奔腾4上,雕刻的精细度增加到90纳米。2008年达到45纳米10纳米预计将于2017年推出,而更小尺寸的发布日期仍不清楚。7纳米可能在2020年问世,5纳米可能在2023年问世。通过如此精细的蚀刻,晶体管接近分子的大小。随着越来越接近物理极限,晶体管变得越来越难以制造。由于硅原子的尺寸由于原子如此之少,迄今为止被忽视的物理效应正在显现。例如,很难目前,专家估计理论物理极限为5 nm。即使已经创建了5nm、4nm和3nm原型,也存在限制。晶体管的小型化该边界被业界称为"墙"要克服这堵墙,多核已经不够了。考虑了几种可能性51.可以使用石墨烯代替硅来制造晶体管。2008年,研究人员发明了最小的晶体管。它是1nm:更准确地说,它的厚度是1个原子,宽度是10个原子。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功