这个有限责任公司编译器基础结构
站点地图:
下载!
搜索此网站


有用的链接
发布电子邮件

llvm-admin团队
CGO第四次LLVM性能研讨会

LLVM性能研讨会将在CGO 2020举行。研讨会与CC、HPCA和PPoPP共存。它发生在圣地亚哥希尔顿度假酒店加利福尼亚州圣地亚哥。如果您有兴趣参加研讨会,请在CGO网站。


  1. 初步时间表
  2. 注册
  3. 联系人
  4. 关于
  • 会议日期:2020年2月23日星期日
  • 位置:美国加利福尼亚州圣地亚哥希尔顿圣地亚哥度假酒店
  • 会议室:Portofino
初步时间表

时间 扬声器 标题  
9:15-9:50 西蒙·莫尔 区域矢量器概述 [摘要]
9:50-10:15 Prithayan Barua公司 优化内存移动以实现OpenMp目标卸载 [摘要]
10:15-10:30   休息
10:30-11:05 乌特帕尔·博拉(Utpal Bora)、桑塔努·达斯(Santanu Das)、潘卡杰·库雷加(Pankaj Kureja)、索拉巴·乔希(Saurabh Joshi)、拉马克里什纳·乌帕拉斯塔(Ramakrishna Upadrasta)和桑杰·拉乔帕德耶(Sanjay Rajopadhye) LLOV:OpenMP程序的快速静态数据空间检查器 [摘要] [幻灯片]
11:05-11:30 约翰内斯·多尔弗特 LLVM中的OpenMP——设计与实现概述 [摘要]
11:30-12:00 - 讨论回合——参与LLVM-GSoC和其他机会
12:00-13:30   午餐
13:30-14:30 威廉·摩西和约翰·多尔弗特 主题演讲:“标题时间优化”:通过注释标题进行跨翻译单元优化 [摘要]
14:30-15:00 田石磊、约翰·多尔弗特和芭芭拉·查普曼 NVIDIA GPU上的异步OpenMP卸载 [摘要] [幻灯片]
15:00-15:15   休息
15:15-15:45 Kyungwoo Lee和Nikolai Tillmann ThinLTO的全局机器大纲视图 [摘要] [幻灯片]
15:45-16:15 Aditya Kumar、Ian Levesque、Sam Todd 用于收集运行时指标的廉价函数入口检测 [摘要] [幻灯片]
16:15-16:45 约翰内斯·多尔弗特 交互式介绍:归因:一个通用的跨过程不动点迭代框架  
16:45-   公开讨论回合

摘要

  • 西蒙购物中心:区域矢量器概述

    区域矢量器(RV)是一种用于LLVM IR的数据并行矢量器RV矢量化系统的主要特点和未来发展方向。

  • Prithayan Barua:优化内存移动以实现OpenMp目标卸载

    OpenMP提供了将计算从CPU主机卸载到GPU等加速器设备。一个关键的潜在挑战是高效管理数据在主机和加速器之间的移动。自从由于数据量和互连,如何有效地管理数据移动操作避免冗余是编译器面临的挑战。在这次演讲中,我们引入一个优化框架,该框架在新型中间表示:建模的位置软件堆SSA(LASSA)在不同设备上运行的任务之间的内存访问和数据移动有私人存储的。该框架提出了删除冗余数据移动到部分冗余消除(PRE)问题并应用懒惰代码运动技术对其进行优化。这是在我们有一个原型LLVM实现。我们评估为10基准测试,获得了2.3倍的Geo-mean加速比,并节省了3480 MB的冗余数据传输。

  • 乌特帕尔·博拉(Utpal Bora)、桑塔努·达斯(Santanu Das)、潘卡杰·库雷加(Pankaj Kureja)、索拉巴·乔希(Saurabh Joshi)、拉马克里什纳·乌帕德斯塔(Ramakrishna Upadrasta)和桑杰(Sanjay)拉乔帕德耶:LLOV:OpenMP程序的快速静态数据竞赛检查器

    在Exascale计算时代,编写高效的并行程序是不可或缺的,同时,编写合理的并行程序非常困难。虽然使用框架进行并行编程更容易例如OpenMP,这些程序中仍然存在数据争用的可能性。在本文中,我们提出了一个基于LLVM的OpenMP程序的快速、轻量级、语言无关和静态数据竞争检查器编译器框架。我们将我们的工具与其他最先进的数据竞赛检查器在各种成熟的基准。我们表明,我们的工具的精度、准确性和F1分数是可比较的对其他检查员来说,速度更快。据我们所知,这项工作是该工具是最先进的数据竞争检查器之一,可以验证FORTRAN程序是否无数据竞争。

  • 约翰内斯·多尔费尔特(Johannes Doerfert):LLVM中的OpenMP——设计与实现概述

    LLVM中的OpenMP支持在许多地方都在快速变化。这次演讲将概述这些变化、它们的状态和目标、它们背后的理性以及做出贡献的方式。内容摘要如下。请注意,演讲介绍了整个社区许多人所做的工作。由于新功能的发布相对频繁,OpenMP在实现方面始终是一个移动目标。此外,我们目前正在努力增加硬件和语言支持:第二个卸载目标,即AMDGPU,正在迅速发展,因此需要重新设计/推广Clang和OpenMP设备运行库中的卸载代码路径。在语言方面,与Clang中的当前实现类似,Fortran编译器前端Flang将需要对OpenMP的完全支持。为了以可维护的方式提供这种支持,代码生成正在从Clang过渡到LLVM-Core。与这些更改一起,开发了OpenMP程序的优化。利用抽象调用站点,Attributor跨概述的OpenMP区域边界执行标量优化,例如恒定传播。最后,显式支持OpenMP的优化是作为OpenMPOpt传递的一部分开发的。

  • 威廉·摩西(William Moses)和约翰·多尔弗特(Johannes Doerfert):主题演讲二:“标题时间优化”:通过注释标题实现跨翻译单元优化

    LLVM自动派生仅在处理相应翻译单元或LLVM模块时使用的事实(即常量函数、错误抛出等)。这在标准编译和链接时间优化(LTO)中都是如此,其中模块在链接时间与同一项目中的其他模块(部分)合并。LTO能够利用这一点优化对翻译单元外部的函数调用。然而,由于实用性的两个原因,LTO并没有解决这个问题:LTO带来了非平凡的编译时间投资;程序可能依赖的许多库不附带LTO信息,只提供头文件和二进制文件。在这个扩展的摘要中,我们通过生成源代码的注释版本来解决这个问题,该版本也包含了这个派生信息。这种方法具有两方面的优点:允许以前仅限于LTO的优化,而无需运行LTO,并且只需要与C/C++兼容的头文件。我们修改后的Clang理解三个自定义属性,它们对任意LLVM-IR属性进行编码,并且它可以根据LLVM-IR中可用的信息发出与C/C++兼容的头文件,其中嵌入了上述属性。我们在LLVM多源应用程序测试套件上对该方法进行了实验测试,发现带注释的报头可以获得30%的加速,并且代表了完整LTO所获得的一半的加速。

  • 田石磊(Shilei Tian)、约翰·多尔弗特(Johannes Doerfert)和芭芭拉·查普曼(Barbara Chapman):NVIDIA GPU上的异步OpenMP卸载

    在LLVM OpenMP卸载的当前实现中将所有内核提交到默认流并阻止发出线程直到设备执行完成。由于默认流序列化所有提交内核并按顺序午餐,即使并行发布内核不会在设备上并发执行。这是有问题的特别是如果单个内核不使用整个设备这种情况在现代GPU上屡见不鲜。在这项工作中,我们提出了一种使用多个流的设计和原型卸载OpenMP目标区域以便在上并发执行设备。我们的原型基础设施的速度提高了1.33倍关于微观基准测试,我们期望从基于硬件的依赖性解决方案。

  • Kyungwoo Lee和Nikolai Tillmann:ThinLTO的全球机器大纲

    LLVM中现有的机器输出程序已经为减少代码大小提供了很多价值,但也有明显的缺点:在ThinLTO环境中,机器输出程序一次只对一个模块进行操作,并且没有获得概述机会,只有将所有模块放在一起考虑时才能获得回报。此外,由于名称不对齐,不同模块中列出的相同功能不会被重复数据消除。我们建议解决这些缺点:我们运行两次机器级代码生成(但不是IR级优化):第一次,目的纯粹是收集有关概述机会的统计数据。第二次,将收集到的知识应用于机器提纲,以执行更多操作。其核心思想是通过一种新的稳定的机器指令散列来跟踪有关概述的指令序列的信息,这种散列在模块中是有意义的,并且非常准确。这样,机器大纲可以在单独的模块中列出许多相同的功能。此外,我们为跨模块的概述函数引入了唯一的名称,然后启用链接ODR以让链接器对函数进行重复数据消除。我们还观察到,帧布局代码往往没有被勾勒出来:生成的帧布局代码通常是不规则的,因为它是为了优化性能而优化的,以独特的方式使用返回地址寄存器,这并不容易勾勒出来。我们将特定于机器的布局代码生成更改为同质的,并按需合成概述的序言和尾声帮助函数,以适合所有模块中实际发生的频繁模式。同样,我们可以在第一个代码生成中收集统计数据,并在第二个代码生成中应用它们。幸运的是,花在codegen上的时间并没有支配整个编译,我们运行codegen两次的方法代表了一个可以接受的成本。此外,代码元往往是非常确定的,在第一个代码元期间收集的信息对第二个代码元非常适用。无论如何,我们的优化是合理的。根据我们的经验,这通常会显著提高ThinLTO概述生成代码的大小甚至性能的效率。我们观察到,在一些大型应用程序中,大纲的代码大小减少了两倍。

  • Aditya Kumar、Ian Levesque、Sam Todd:用于收集运行时指标的廉价函数入口检测

    编译器检测技术非常便宜、无锁(在某些情况下)且可扩展。这可能是用于死代码检测、空指针检测、函数参数的值分析等。

联系人

如有任何疑问,请联系研讨会组织者:JohannesDoerfert(jdoerfert at anl.gov)、Sebastian Pop(spop at amazon.com)、Aditya Kumar(美国联邦广播公司网站aditya7)

关于
在LLVM开发人员会议上,您可以期待什么?

面板

小组会议是关于特定主题的指导性讨论。该小组由~3名讨论主题的开发人员组成通过主持人准备的问题。观众也有机会向小组提问。

羽毛鸟(BoF)

BoF会议,一种非正式会议,与会者根据共同兴趣和在没有任何预先计划的议程的情况下进行讨论。

技术会谈

这些20-30分钟的会谈涵盖了从核心基础设施会谈到项目使用LLVM基础设施的所有主题。与会者将带走与其项目或一般利益相关的技术信息。

教程

教程是50-60分钟的课程,深入探讨技术主题。期待深入的示例和解释。