并行程序设计语言中局部性机制的探讨

来源 :无线互联科技 | 被引量 : 0次 | 上传用户:ntsx888
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:多核CPU的存储层次越来越深而且越来越复杂,这已经成为优化大规模并行应用程序性能的关键瓶颈。目前并行程序设计语言和多核CPU有两种局部性设计方法,一个是横向局部性,另一个是纵向局部性,通过这两种视角可以进一步了解现在并行程序设计语言中局部性机制的特点。文章就并行程序设计语言中局部性机制进行探讨,深入分析其优缺点,探究未来并行程序设计语言设计的方向,指出新语言可以考虑这两种局部性设计机制,希望能为相关从业者带来一些参考。
  关键词:并行程序;设计语言;局部性机制
  0 引言
  为了解决访问延迟与处理器速度之间的差距变大的問题,体系架构设计者在硬件上引入了存储层次概念。同时,想要充分挖掘出存储层次的硬件设计优点,并行程序设计语言要具备优秀的局部性机制,才能得到更高的性能。并行程序设计语言领域中,技术人员会逐步加入不同的局部性机制,进一步增强语言挖掘局部性的力度。科研人员若要写出性能高的代码,需要考虑在并行程序设计语言和编程模型的设计中加入局部性的描述和表示机制,以方便科研人员利用这些机制来描述和挖掘算法及程序中的局部性[1]。
  1 并行编程语言发展趋势
  随着科技发展,多路多核处理器的出现使得MPI(Message Passing Interface)在优化设计并行算法时遇到困难,MPI是基于分布式存储最受欢迎的编程方式。虽然MPI在节点间运行,OpenMP在节点内运行,这样可以实现混合并行,但是这是两种不一样的并行语言,设计人员在设计时难度会增加。所以新并行编程语言一定要考虑到多层次并行的支持,进一步优化硬件层次的设计、访存的延迟和带宽等。数据局部性会成为重要的因素,新设计的编程语言要给技术人员定义数据局部性的机制,尽量减少访存和通信次数,提高程序运行性能。存储层次的复杂,使得并行程序设计语言中局部性机制更加重要,目前人们日益关注针对多核的存储访问局部性的算法研究,所以未来并行编程语言的研究重点是设计容易表达算法局部性的机制。
  2 新设计的并行编程语言要具备的要点
  首先要有具备纵向局部性和横向局部性的显式管理机制。现在并行计算系统的存储层次越来越复杂,如果只靠运行时系统和编译器来处理局部性问题和并行性开发,不是最佳的处理方法,还要依靠技术人员的显式管理。
  新开发的并行编程语言要能够应用在不一样的并行编程模式中,比如任务并行、数据并行等。
  统一管理程序的局部性和并行性,开发设计人员利用编程语言可以整体设计这两种特性,想办法减轻人员的工作负担,同时又能够开发高性能的并行程序,并且保证并行程序可在不同硬件平台移植。
  与Local View类似,这些方法虽然能够帮助开发人员编程的效率,减轻他们的工作负担,加快并行程序的开发进程,但是这种固定的处理数据方案也限制了更有效设计并行算法和数据划分,而且也只能支持部分并行模式。虽然并行程序开发人员管理局部性可以复用分布类,但其实是有限的,就算是设计了大量的分布类,都很难高效使用。
  3 并行程序设计语言中局部性机制
  并行程序设计涉及多方面的知识,并非简单的并行算法的设计,只有综合考虑各方面的因素,才能设计出高效率的并行程序[2]。并行程序设计语言中局部性机制分为横向局部性和纵向局部性两种。对分布式并行程序设计而言,利用更多的局部性机制是横向局部性,主要考虑怎么样减少消息传递的开销。而串行程序相反,考虑更多的是纵向局部性,现在已经有很多的文献研究。
  3.1  并行程序设计语言中横向局部性
  横向局部性是由于存储位置的分布导致同一内存层次上的数据通信,例如Jacobi算法就是因为把数组数据分块造成不同块间的边界通信。一般来说数据分布如果有不错的空间局部性,就会有不错的横向局部性,但是横向局部性不只有良好的空间局部性,还包括数据通信的开销。并行程序设计语言的横向局部性分为两种设计,一种是像OpenMP,编译器自动划分和分配数据,另一种是像HPF,技术人员管理控制数据划分和分配过程。
  HPF编程模型和OpenMP,MPI都不一样,前者为了管理并行程序设计语言中的横向局部性,设计定义和它们不一样的分布类型。在管理横向局部性方面,显然HPF优势更大。开发人员运用HPF编写程序时,一般运用编译制导语句来进行数据的分块,并行操作不同数据块则运用forall语句,不过HPF描述数据局部性较单一。因为有划分的内存地址空间,并行程序设计语言PGAS改进了OpenMP的存储模型,但是数据分块方法略有差异,思想还是差不多,由开发人员来管理数据分块,运行时系统和编译器管理线程间的通信。
  3.2  并行程序设计语言中纵向局部性
  不同存储层次之间的局部性就是纵向局部性,比如内存和Cache。纵向局部性还可以从时间和空间来分成两种。随着科技的发展,并行计算系统存储层次越来越复杂,CPU性能和内存访问性能之间的差距正在扩大。想要提高计算程序的性能,就一定要考虑到数据的纵向局部性。同时,这种考虑往往不具备可移植性,所以在对并行编程模型重新设计时,一定要显式管理存储层次,尤其是出现多核处理器后,让并行程序对存储层次进行显式管理,进一步优化纵向局部性,是一种提升程序性能的重要方法。
  在显式管理纵向局部性方面,现在已经有多个基于Cell处理器的编程模型。纵使Cell SDK可以位于Cell核内部完成MPI编程,也可以位于独立地址空间实施Pthread编程,然而Cell SDK在局部性管理上仍有缺陷,横向局部性管理导致并行编程的难度大大增加,纵向局部性管理也只是实现了不同存储层次间的通信,扩展性和可移植性很差。
  Sequoia是为了应对Cell SDK的这些缺陷而出现的,现在是组成Cell的重要部分。开发人员可以用Sequoia显式管理存储层次,设计出性能更加好的算法。在显式管理纵向局部性时,Sequoia设置数据传递大小会考虑底层硬件平台的不同存储层次特征,更好地显式管理纵向局部性。不过计算机集群系统却没有上面所说的共享机制,它的计算节点是经由高速网络之后连接,Sequoia为实现物理内存的抽象特意添加虚拟层。因此Sequoia不管是纵向局部性还是横向局部性都可以管理,并且应该允许技术人员的继续优化,不断提升程序的性能。总之Cell SDK可以显式管理每个层次,可以看成是具备两个存储层次的Sequoia。
  3.3  综合两种局部性
  在算法设计和并行实现时,想要让并行程序的性能更高,就需要对纵向局部性和横向局部性加以考虑。并行编程语言设计好了关于横向局部性的管理机制,比如PGAS和MPI,不管用哪个通信机制,都是为了让开发人员更好实现对横向局部性的显式管理,并且尽量减少通信开销。当并行应用程序采用了这些编程语言时,横向局部性、并行性挖掘和并行模式等都会考虑到,因此可以将并行性完美融合横向局部性。在纵向局部性方面,由Sequoia设计出来的task,便于编程语言管理并行和两种局部性,它既能制定多层次的并行模式,又有管理纵向局部性和横向局部性的机制。在开发新的编程模型时可以考虑以上方式,编写出更高效和性能更好的应用程序。
  4 结语
  现如今计算机存储系统越来越复杂,尤其是多核处理器的出现,系统更加难以开发局部性,所以更加显出局部性的描述和表示机制的优势。局部性机制可以帮助研究人员写的代码性能更好,进一步挖掘算法。本文分析了并行程序设计语言和多核处理器的状况,探讨了未来并行程序设计语言的发展趋势,详细分析了并行程序设计语言中局部性机制的各种定义和应用。并行程序设计语言中局部性机制主要是分为纵向局部性和横向局部性两种,文章分别从这两个视角来着重分析了局部性机制,对设计并行编程模型的方向更加明确。
  [参考文献]
  [1]袁良,张云泉,白雪瑞,等.并行程序设计语言中局部性机制的研究[J].计算机科学,2020(1):7-16.
  [2]黄伟文,姚文庆.并行程序设计[J].宁波职业技术学院学报,2002(2):87-90.
  (编辑 何 琳)
其他文献
摘 要:5G网络技术的发展为现代电力产业提供了新的发展动力与发展契机。文章以电力5G网络切片全生命周期为主要研究对象,针对电力5G网络进行多角度、多层次、多维度地分析和论述,结合笔者多年从事电力行业的科研经验,提出一系列电力5G切片技术的应用内容,为从事相关工作的技术人员提供力所能及的帮助和支持。  关键词:5G网络切片;生命周期;电力产业  0 引言  电力行业的发展和创新,需要融合多种前沿
摘 要:在当前时代背景下,5G技术越发普及,其在进行数据传输的过程中,能够依靠引入增强物理层信号技术,以此提升信号本身的安全水平。尽管经过长时间探究,我国已经在相关领域取得了较好的成绩,但仍然有部分问题没有攻克。文章主要描述了5G通信网络构建的重要性,探讨了5G无线通信物理层关键技术,并对于安全信号处理技术发表一些观点和看法。  关键词:5G通信;增强物理层;安全信号;处理技术  1 5G通信
无线物联网是基于多种协议的无线网络整合产物,为满足移动终端在无线物联网中的漫游切换,需构建完善的切换机制。文章从无线物联网切换机制现状入手,分析传统切换机制的不足,提出基于层次化网络编码的无线物联网协作切换机制,论述其物理模型与构建思路、要点,并实施仿真模拟,验证该机制的可行性与可靠性。
摘 要:为确保广播电视播放的安全性,广播电视监测网得到广泛重视,同时对智能化监测网的安全、延时以及网速等要求也越来越高。随着5G技术的快速发展及其在智能化广播电视监测网中的运用,能够通过切片服务等一系列新技术的引入,对网络资源配置进行动态规划,使监测网网速有效提升,延时降低,并使监测站点可选址范围进一步扩大,使不同时段、不同时期的网络弹性需求得以有效满足。文章就5G技术在智能广播电视监测网建设中的
摘 要:随着信息技术的不断发展,信息技术下的产物开始在各个领域中流行起来,它对人们的生活和工作都带来了极大的便利,既能更好地满足人们生活的日常所需,也能够使人们的工作更加高效地完成。但是,从目前的情况来看,我国的网络信息安全的状况存在一定的问题,对人们的安全产生一定的威胁。我国一直致力于此方面的工作,随着大数据技术的出现,对网络安全分析中出现的问题也提出了更好的解决策略。文章对大数据技术在此方面的
摘 要:大学生电子设计竞赛活动的有效开展会有效培养学生适应社会的能力,为此,文章在阐述应用型人才培养特点的基础上,立足于当前电子信息类专业人才培养现状,从增长见识、提升学生知识应用能力、提高学生职业素养几个方面具体分析如何透过大学生电子设计竞赛更好地培养电子信息专业学生的职业能力,旨在能够为社会发展提供更多电子信息应用型人才。  关键词:大学生电子设计竞赛;电子信息;应用型人才;特点;创新  0
摘 要:为了在大学校园推行极简主义生活方式,文章以uni-app跨平台移动UI框架为技术基础,开发了一款可以发布在Android、IOS、H5以及微信小程序等多平台的应用程序。通过对该系统的部署与应用,为今后开展与校园极简生活有关的实践提供了技术支持。  关键词:uni-app框架;跨平台移动应用开发;校园极简生活  0 引言  随着移动应用的普及,我们的日常生活正在悄无声息地发生着改变,它以其
摘 要:文章针对传统的计算机专业面临如何满足新兴产业的需求状况,分析民办高校计算机专业在人才培养及现实教学方面的一些问题,列举了民办高校计算机专业在人才培养方面需要从4个方面构建育人模式,提出了民办高校计算机专业在构建人才培养方面需要多方协同的育人模式。  关键词:计算机专业;人才培养;协同育人  0 引言  新工科是以经济、新产业为背景,新工科的建设,一方面要在原有专业的基础上建设一批与社会发展
摘 要:社会的不断进步推动了科技的快速发展,同时也带动了计算机的发展步伐。20世纪末计算机的普及,软件开发也快速发展,使得编程语言也在不断更新和进步。计算机软件开发人员在选择编程语言时,要结合软件各方面的特点,充分发挥计算机软件开发人员的专业技术,在提高软件开发效率的同时,保证及计算软件的性能,提高其市场地位。  关键词:编程语言;计算机软件开发;影响  0 引言  随着中国社会经济的快速发展
摘 要:随着无线传感器网络的不断推广,其安全问题日益凸显。鉴于传统密钥管理机制难以适用无线传感器网络,对无线传感器网络安全与密钥管理技术进行研究显得尤为必要。基于此,文章首先阐述了无线传感器网络密钥管理影响因素,其次分析了无线传感器网络密钥管理安全目标,最后探讨了无线传感器网络密钥管理方案。  关键词:无线传感器网络;网络安全;密钥管理技术  0 引言  无线传感器网络指的是一种由一系列可实现