威廉玛丽学院计算机教授刘旭,专栏-中国计算机学会

编者按:中国超级计算机研制水平已处于世界领先,超级计算机应用也在去年实现突破,首次获得了戈登贝尔奖(Gordon Bell Prize)。在中国超级计算机研究开展得如火如荼之际,本刊特别邀请美国威廉玛丽学院的刘旭教授分享他对超级计算机系统软件的认识与研究体会。刘旭教授长期从事超级计算机的系统软件研究,取得了多项出色的成果,在SC、ASPLOS、PPoPP等顶级会议上发表了一系列论文,并获得了SC’15唯一的会议最佳论文、ASPLOS’17会议最佳论文提名。

超级计算一直是各大国之间角逐的领域。中国在硬件和软件两个领域都取得了举世瞩目的成就。在硬件领域,中国制造的超级计算机已经连续多年问鼎全球最快的计算机。在软件领域,中国科学家开发的软件获得了2016年超级计算软件的最高奖——戈登贝尔奖(Gordon Bell Prize)。与此同时,为了与中国的超级计算机竞争,美国也在争分夺秒地进行着CORAL项目。此项目是由美国能源部下属的多个国家实验室和工业界紧密合作,计划在2017年研发和部署的最新超级计算机。

超级计算机的硬件和应用软件分别是整个超级计算机系统的最底层和最上层,在它们之间还存在着我们称之为软件栈(software stack)的系统软件,包括编译器、并行运行环境、作业调度系统、性能分析和调试工具等等。系统软件能紧密结合硬件和应用软件,进而提高硬件使用效率和软件运行速度。长期以来,有效的系统软件是科研工作者研究的热点。我的研究领域也是超级计算机的系统软件,具体讲就是程序性能分析工具。在本文中,我将介绍自己对本领域的一些认识,分享自己的研究体会。

对研究领域的认识

研究领域——什么是程序性能分析工具

程序性能分析工具(profiler)是通过静态(static)或者动态(dynamic)程序分析来指出程序运行时的性能瓶颈,并给用户(程序开发者或者编译器)提供反馈来进行优化。通常,编写一个高效的应用软件是非常困难的,特别是对于动辄有几百万行代码的复杂的超级计算并行应用程序。很多并行程序会遇到各种性能问题,例如,软件问题(低效的算法,不合适的数据结构),编译器问题(编译器低效的生成代码),运行时问题(并行的开销,负载不均衡,线程进程同步和通信的开销,内存缓存和带宽的低效使用)等等。通常情况下,寻找这些性能瓶颈需要大量的人力。为了提高效率,研究人员一般依赖性能分析工具来对程序进行自动化的分析。

现有的部署在超级计算机上的主流性能分析工具(英特尔的商业工具VTune,俄勒冈大学(University of Oregon)的TAU,莱斯大学(Rice University)的HPCToolkit,欧洲的Scalasca等等)主要依赖动态程序分析,同时也会用一些静态信息作为辅助。动态分析的工作流程首先是运行一遍待分析的程序,同时运行分析工具动态的监测程序来收集相关的性能指标。一旦程序运行结束,性能工具把所有的性能数据写入文件或者数据库,以待后续分析。一般情况下,性能分析工具会有一个线下的分析模块来处理所有的性能数据,并将其关联到程序的源代码中。用户进而根据分析结果来优化程序。如果仍然得不到预期的性能,用户可以重复之前的流程来逐步优化各个性能瓶颈。

论文评审——什么是好的性能分析工具

长期以来,关于程序性能分析工具的论文主要发表在SC、CGO、PPoPP、PLDI和IPDPS等会议上,并且多次被会议委员会评为最佳论文。近些年来,一些顶级的系统会议也乐于接收有关性能分析工具的文章。例如,SOSP’15收录了马萨诸塞大学(University of Massachusetts)的COZ性能分析工具。COZ可以用来分析并行程序的关键路径(critical path),进而指出和性能紧密相关的关键代码来优化。这篇有关COZ的论文被SOSP’15评为最佳论文。另外,ASPLOS’17收录了我们的RedSpy性能分析工具的论文。RedSpy是用一个细粒度的分析工具来分析程序冗余的内存写入(memory write)指令。这篇有关RedSpy的论文被提名为ASPLOS’17的最佳论文。

根据我投稿和审稿的经验,评价性能分析工具比较直接明了。一篇高档次的论文一般都具有以下几个特点:第一,研究贡献。这些论文都能发现现有的工具不能发现的性能问题,或者付出较小的代价来发现已有的性能问题。这一般需要性能工具采用一些创新的检测或者分析方法。第二,系统实现。这些论文都详细阐述了性能工具实现中遇到的各种问题和挑战,比如如何降低性能分析的开销,如果处理多线程和多进程的程序,如何更直观地给用户提供分析结果。第三,系统评测。对工具详细的性能评测包括工具运行时的时间和内存开销,以及是否能发现已有的相关工具所不能发现的性能问题。同时系统评测还包括有说服力的案例分析(case study)来展示工具的创新性和可用性。下面我展开谈一谈案例分析。

什么样的案例分析是有说服力的呢?一方面是要分析业界通用的程序集,例如SPEC、PARSEC、NPB,以及一些美国能源部国家实验室发布的程序集,如Sequoia、CORAL、APEX。这些程序集大多已经发布了十年以上,并经过了多次优化。同时,当前很多研究人员也致力于优化这些程序,并且发表优化的结果。可以说,这些程序集已经成为评估硬件、编译器以及性能工具的标准程序集。如果一个性能分析工具仍然能在这些程序集里找到之前没有发现的优化机会,那么这个工具就是有创新的。另一方面,如果一个性能分析工具能找到现有重要的应用程序上的性能问题,把它们作为案例分析也是非常有说服力的。比如,我们之前在美国能源部下太平洋西北国家实验室开发的计算化学软件NWChem里发现了性能问题,并给出了优化方案,使得有600万行代码的NWChem性能提升了1.5倍。用既真实又重要的应用程序作为案例分析,既能证明工具的鲁棒性,又能引起业界审稿人的兴趣。

发展前景——对性能分析工具的展望

性能分析工具在超级计算机的软件栈中占据重要的位置。近些年,为推动性能分析工具的发展,业界每年都会在加利福尼亚州的太浩湖(Lake Tahoe)举行为期四天的研讨会,讨论未来性能工具的发展趋势。与会的专家有来自工业界的谷歌、克雷、英特尔和IBM等,有学术界的威斯康星大学、莱斯大学、德克萨斯州大学奥斯汀分校和俄勒冈大学等,有国家实验室和超算中心,如劳伦斯·利弗莫尔国家实验室、于利希(Julich)超级计算机中心和巴塞罗那超级计算机中心等。近些年来,北京航空航天大学钱德沛教授团队也来参加这个研讨会,和国外同行进行研讨。根据自己的研究经历和多次参加工具研讨会得到的一些经验,我认为性能分析领域未来会朝着以下几个方向发展:

1.可扩展到百亿亿次(exascale)超级计算机的性能分析工具。设计可扩展在百亿亿次超级计算机上运行的应用程序非常有挑战性。这就需要性能分析工具指出并消除影响可扩展性的性能瓶颈。但是,性能工具运行在大规模并行计算机上面临着如何在收集到的大量数据中找到性能问题并展示给用户的挑战。同时,性能分析的开销要足够小进而不能成为运行时的可扩展性瓶颈,否则工具收集到的数据很难暴露出低效的软硬件交互,并且用户也不会很容易接受使用这个工具。

2.语义级别(semantic level)的性能分析工具。现有的性能分析工具大多数能找到程序的热点并且关联到程序的循环体或者函数。热点分析固然不可或缺,但是提供的信息相对较少。比如,性能工具指出一个函数耗费了大量的运行时间并造成了大量的缓存缺失,但是分析出真正的原因并给出针对性的优化策略还需要人工进一步分析。所以,将来的性能分析工具会向语义分析的方向发展,并提供高层次的算法,数据结构信息只作为热点分析的补充。这样的性能工具将会给出更准确的判断来确定性能瓶颈的位置,并且全自动地给出性能瓶颈的原因,作为程序优化的参考。

研究实践中的体会

我在中国科学院计算技术研究所读了三年的硕士,在美国莱斯大学读了五年的博士,目前在美国威廉玛丽学院(College of William & Mary)从事教学研究已有三年。如何取得高质量的研究成果,我有以下三点深刻体会。

1. 重视研究的积累

现有的主流性能分析工具都有长时间的开发积累。例如,英特尔的VTune,俄勒冈大学的TAU,以及莱斯大学的HPCToolkit都有十年以上的开发经历。这样长时间的开发经历让这些性能分析工具愈加完善,同时一些新的想法基于已有的开发框架也更容易实现,更有说服力。我现在的研究主要集中在两个性能分析工具上,一个是HPCToolkit,另一个是CCTLib。基于这两个工具,我们都发表了一系列论文,并且获得主要会议的认可。

基于HPCToolkit上的研究是我在博士期间所做研究的一个延续。我在HPCToolkit中加入了以数据结构为中心的性能分析,进而能更轻量级地分析和内存相关的性能瓶颈。在这项工作之前,传统的性能工具需要通过插桩(instrumentation)和模拟(simulation)来得到内存相关的性能瓶颈。这些传统工具一般要产生十几倍到几百倍的运行时间开销(overhead),非常不利于在检测大型超级计算程序上应用。我的工作是通过使用硬件计数器(performance counter)把这个时间开销降低到10%以下。我们在SC’13、PPoPP’14、PACT’14、SC’15和HPDC’16发表了一系列论文,阐述了这个轻量级的性能分析工具对不同内存性能问题的分析。其中我们的论文在SC’15上斩获了唯一的会议最佳论文,会议委员会一致认为我们的性能工具为解决超级计算机系统中内存墙(memory wall)问题提供了强有力的指导。

CCTLib是我们为性能分析工具开发者所研发的一套细粒度性能分析工具框架。基于CCTLib,我们开发了一系列的细粒度的工具来寻找程序中的冗余计算以及冗余的内存操作。对于这些冗余的操作,传统的性能分析工具很难找到它们。我们在CGO’14、PACT’15和ISMM’16发表了一系列的论文来探讨CCTLib的应用。我们最新的一篇论文发表在ASPLOS’17,并被提名为会议最佳论文。专家委员会认为,我们解决了一个在性能分析上的基础性问题(fundamental problem)。

2. 开发有实际用途的工具

若要让用户认可一个性能分析工具并真正应用在自己的研究或者开发环境中,这个性能分析工具必须要有自己独有的特点。现有的主流工具都具备这个特点。比如,VTune能更好地利用英特尔处理器上的性能检测单元(PMU);TAU支持不同级别的程序插桩,可以快速地移植到各个不同的系统平台;HPCToolkit支持准确的轻量级的调用堆栈展开(call stack unwinding)以及性能瓶颈原因分析(root cause analysis);CCTLib可以支持细粒度的程序分析,进而可以指出冗余的和不必要的操作。正因为这些不同的特性,这些工具根据不同的需要才有不同的应用场景。

作为能够实用的工具,除了具备新颖的分析方法,直观地展示分析结果也非常重要。这是因为大多数用户是应用程序开发者而不是计算机系统的专家,让这些用户感觉到工具“好用”是非常关键的。通常,用户习惯使用一个工具后,他们很少再去更换使用别的工具。相反,如果一个工具给用户的第一印象不好,那么以后也很难说服用户改变他们的看法。基于这个原因,大多数工具研发人员都会设计直观的图形界面(graphic user interface)来直接显示程序的性能问题。

3. 对研究结果的宣传

众所周知,发表高档次的论文并在会议上演讲是推销自己研究成果行之有效的方法。除此之外,还有四个方法能够有效地扩大自己研究的影响力以得到更广泛的关注:系统的开源,和用户的沟通,在会议上组织工具的教程,以及积极参加标准制定委员会。我通过我的博士导师约翰·梅勒-克拉米(John Mellor-Crummey)教授的经历来介绍这几种推销方法。

约翰·梅勒-克拉米教授是HPCToolkit开源工具的创始人和维护者。我们提交代码都需要通过他的代码审核来保证HPCToolkit的代码质量。同时,他又是一个非常优秀的程序员,长期工作在代码编程的第一线。开源的HPCToolkit也得到了更多用户的使用和认可。

约翰·梅勒-克拉米教授每年都会到美国能源部下属的各个国家实验室,和那里的超级计算应用开发者一起研讨。他会详细地询问应用开发人员对性能工具的需求以及他们对自己开发的应用程序上的性能疑问。之后,他会有针对性地开发HPCToolkit,并推销给这些用户去使用。经过多年的努力,HPCToolkit已经部署在绝大多数国家实验室的超级计算机上,并得到程序开发人员的广泛应用。

约翰·梅勒-克拉米教授会在一些主流会议上组织HPCToolkit的教程,从与会者中吸引更多的用户。受到导师的影响和启发,我也在2017年的CGO上组织了CCTLib的教程。我们花费了近一个月的时间准备演讲稿、性能工具的安装使用教程和直观的教程用例。组织这个教程能更快地扩大CCTLib的影响力。我们由此吸引了美国和欧洲的一些工业界、学术界的与会开发人员参加教程,并且让他们使用和参与开发了CCTLib。

约翰·梅勒-克拉米与我自己都加入了OpenMP旗下的关于工具接口的委员会。OpenMP是超级计算中应用最为广泛的标准的共享内存并行编程模型之一。我们致力于设计一套轻量级的用户编程接口来让性能工具更好地分析OpenMP程序。经过近五年的努力(2012年初到2016年底),我们成功地在OpenMP标准中加入了我们设计的接口——OMPT。HPCToolkit成为第一个支持OMPT的性能工具,影响了整个领域的发展。

随着超级计算硬件和应用软件的迅猛发展,未来对性能工具这样的系统软件工具会有更多更高的要求。我希望能有更多的研究人员能加入这个领域,致力于提高计算机的软件效率和硬件使用率。

智慧旅游解决方案利用云计算、物联网和移动互联网技术,通过便携终端设备,实现对旅游资源、经济、活动和旅游者信息的智能感知和发布。这种技术的应用旨在提升游客在旅游各个环节的体验,使他们能够轻松获取信息、规划行程、预订票务和安排食宿。智慧旅游平台为旅游管理部门、企业和游客提供服务,包括政策发布、行政管理、景区安全、游客流量统计分析、投诉反馈等。此外,平台还提供广告促销、库存信息、景点介绍、电子门票、社交互动等功能。 智慧旅游的建设规划得到了国家政策的支持,如《国家中长期科技发展规划纲要》和国务院的《关于加快发展旅游业的意见》,这些政策强调了旅游信息服务平台的建设和信息化服务的重要性。随着技术的成熟和政策环境的优化,智慧旅游的时机已经到来。 智慧旅游平台采用SaaS、PaaS和IaaS等云服务模式,提供简化的软件开发、测试和部署环境,实现资源的按需配置和快速部署。这些服务模式支持旅游企业、消费者和管理部门开发高性能、高可扩展的应用服务。平台还整合了旅游信息资源,提供了丰富的旅游产品创意平台和统一的旅游综合信息库。 智慧旅游融合应用面向游客和景区景点主管机构,提供无线城市门户、智能导游、智能门票及优惠券、景区综合安防、车辆及停车场管理等服务。这些应用通过物联网和云计算技术,实现了旅游服务的智能化、个性化和协同化,提高了旅游服务的自由度和信息共享的动态性。 智慧旅游的发展标志着旅游信息化建设的智能化和应用多样化趋势,多种技术和应用交叉渗透至旅游行业的各个方面,预示着全面的智慧旅游时代已经到来。智慧旅游不仅提升了游客的旅游体验,也为旅游管理和服务提供了高效的技术支持。
智慧旅游解决方案利用云计算、物联网和移动互联网技术,通过便携终端设备,实现对旅游资源、经济、活动和旅游者信息的智能感知和发布。这种技术的应用旨在提升游客在旅游各个环节的体验,使他们能够轻松获取信息、规划行程、预订票务和安排食宿。智慧旅游平台为旅游管理部门、企业和游客提供服务,包括政策发布、行政管理、景区安全、游客流量统计分析、投诉反馈等。此外,平台还提供广告促销、库存信息、景点介绍、电子门票、社交互动等功能。 智慧旅游的建设规划得到了国家政策的支持,如《国家中长期科技发展规划纲要》和国务院的《关于加快发展旅游业的意见》,这些政策强调了旅游信息服务平台的建设和信息化服务的重要性。随着技术的成熟和政策环境的优化,智慧旅游的时机已经到来。 智慧旅游平台采用SaaS、PaaS和IaaS等云服务模式,提供简化的软件开发、测试和部署环境,实现资源的按需配置和快速部署。这些服务模式支持旅游企业、消费者和管理部门开发高性能、高可扩展的应用服务。平台还整合了旅游信息资源,提供了丰富的旅游产品创意平台和统一的旅游综合信息库。 智慧旅游融合应用面向游客和景区景点主管机构,提供无线城市门户、智能导游、智能门票及优惠券、景区综合安防、车辆及停车场管理等服务。这些应用通过物联网和云计算技术,实现了旅游服务的智能化、个性化和协同化,提高了旅游服务的自由度和信息共享的动态性。 智慧旅游的发展标志着旅游信息化建设的智能化和应用多样化趋势,多种技术和应用交叉渗透至旅游行业的各个方面,预示着全面的智慧旅游时代已经到来。智慧旅游不仅提升了游客的旅游体验,也为旅游管理和服务提供了高效的技术支持。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值