Motivation:

  编译器实现是一项复杂而昂贵的活动。出于这个原因,人们对使用机器学习来自动化各种编译器任务产生了极大的兴趣,大多数工作都将注意力限制在选择编译器启发式做出优化决策。现有的基于专家人工操作和基于机器学习的方法都不足以满足需求。(决策需要对程序及其行为进行推理。 专家决策通常依赖于数据流分析,工作量大,复杂且难以迁移;机器学习工作通常将程序的全部行为表示为一个固定长度、静态计算的特征向量。这类方法的明显弱点是,它们被添加的dead code所混淆,dead code改变了它们的特征向量,而不会改变程序的行为或对优化的响应。 这种学习算法无法学习它们自己对程序的抽象解释,因此无法解决这种情况。)所以需要一个程序表示,使机器学习算法能够通过开发自己的数据流分析来推理程序的执行。

Challenge:

  • 输入的表示方式——如何把程序转换成图并尽可能多的涵盖数据流分析相关信息;
  • 数据的处理方式——依赖关系等信息获取

  

Contribution:

  • 提出了一种可移植的、独立于语言的、由编译器IR派生的程序的图形表示——PROGRAML, 可以同时捕获指令和操作数之间的控制数据调用关系,以及它们的顺序和数据类型。 Programl是一个与编译器无关的设计,文章做了LLVM和XLA IRs下的实现。;
  • 引入基准数据集DeepDataFlow(编译器分析任务,作为有监督的机器学习问题,多领域,多语言,共85亿个数据流分析分类标签);————这个后面可以去看一下,能不能用
  • 模型选用Gated-Graph Neural Networks (GGNN) ,然后就是对比实验结果巴拉巴拉。。。

Methodllogy:

构图部分:

  PROGRAML将程序转化为有向图,指令、变量、常量为节点。它们之间的关系为边,边被类型化以区分控件流、数据流和调用流。

  图3b为full-flow graph,节点为指令,边为关系。——控制流部分

  然后把常数和变量作为节点加入其中(图3c),产生数据流边(常量和变量与使用它们作为操作数的指令之间的关系和指令到产生的变量之间的关系)。——数据流部分

  最后再插入调用边来表征调用函数的指令和被调用函数的入口指令之间的关系。——call-flow部分

  生成的图是多个小图合成的一个大图。小图间由call边相连。

算法模型部分:

  基于GGNN[1]改编;包括三个阶段:输入编码、消息传播和更新以及结果读出。

Experiment:

以sequential model 和graph model做baseline做对比实验。(基于Vocabulary Coverage, DDF-30: Testing on Limited Problem Size, DDF-60: Generalizing to Larger Problems和DDF: Scalability Challenges分析)

Reference:

[1] Li, Y., Zemel, R., Brockscmidt, M., and Tarlow, D. Gated Graph Sequence Neural Networks. arXiv:1511.05493,2015.

论文阅读: CCF A 2021 PROGRAML:用于数据流分析和编译器优化的基于图的程序表示 (PMLR)的更多相关文章

  1. [论文阅读] RNN 在阿里DIEN中的应用

    [论文阅读] RNN 在阿里DIEN中的应用 0x00 摘要 本文基于阿里推荐DIEN代码,梳理了下RNN一些概念,以及TensorFlow中的部分源码.本博客旨在帮助小伙伴们详细了解每一步骤以及为什 ...

  2. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  3. 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)

    今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...

  4. 【医学图像】3D Deep Leaky Noisy-or Network 论文阅读(转)

    文章来源:https://blog.csdn.net/u013058162/article/details/80470426 3D Deep Leaky Noisy-or Network 论文阅读 原 ...

  5. 论文阅读 | FCOS: Fully Convolutional One-Stage Object Detection

    论文阅读——FCOS: Fully Convolutional One-Stage Object Detection 概述 目前anchor-free大热,从DenseBoxes到CornerNet. ...

  6. 论文阅读 | FoveaBox: Beyond Anchor-based Object Detector

    论文阅读——FoveaBox: Beyond Anchor-based Object Detector 概述 这是一篇ArXiv 2019的文章,作者提出了一种新的anchor-free的目标检测框架 ...

  7. 论文阅读 | Region Proposal by Guided Anchoring

    论文阅读 | Region Proposal by Guided Anchoring 相关链接 论文地址:https://arxiv.org/abs/1901.03278 概述 众所周知,anchor ...

  8. 论文阅读:Face Recognition: From Traditional to Deep Learning Methods 《人脸识别综述:从传统方法到深度学习》

     论文阅读:Face Recognition: From Traditional to Deep Learning Methods  <人脸识别综述:从传统方法到深度学习>     一.引 ...

  9. 【论文阅读】Learning Dual Convolutional Neural Networks for Low-Level Vision

    论文阅读([CVPR2018]Jinshan Pan - Learning Dual Convolutional Neural Networks for Low-Level Vision) 本文针对低 ...

  10. 论文阅读笔记六十四: Architectures for deep neural network based acoustic models defined over windowed speech waveforms(INTERSPEECH 2015)

    论文原址:https://pdfs.semanticscholar.org/eeb7/c037e6685923c76cafc0a14c5e4b00bcf475.pdf 摘要 本文研究了利用深度神经网络 ...

随机推荐

  1. python之路55 cookie与session 操作 把模块变成字符串进行导入

    django中间件三个了解的方法 1.process_view 路由匹配成功之后执行视图函数/类之前自动触发(顺序同process_request) 2.process_exception 视图函数/ ...

  2. spark RPC超时造成任务异常 Attempted to get executor loss reason for executor id 17 at RPC address 192.168.48.172:59070, but got no response. Marking as slave lost.

    日志信息如下 Attempted to get executor loss reason for executor id 17 at RPC address 192.168.48.172:59070, ...

  3. 通俗易懂angular搭建

  4. CF1051E Vasya and Big Integers

    [CF1051E Vasya and Big Integers](Problem - E - Codeforces) sb的做法 单调队列乱整( #include<bits/stdc++.h&g ...

  5. 关于VBA中,activesheet用法的一些思考

    前二天,给财务部做了个数据采集的工具,因为财务现在用的是excel2013 和2017的版本,所以我决定不用python,改用VBA来处理这个工具. 在 写过程的时候,我用了sheets(i)来定位表 ...

  6. Python 异步集群使用

    目前在做Python项目用到同步和异步的方法使用Redis单机,现在要增加兼容Redis集群.也就说当前项目用到中以下4种Python使用Redis的方法都用到了. - 同步 异步 单机 涉及 涉及 ...

  7. JSP第九次作业

    1.建库,建表2个用户表(id,用户名,密码)邮件表(id,发件人,收件人,标题,内容,发送时间,状态) 2.建model层entity,dao包 3.登陆,注册,登陆后显示全部邮件 dao 1 pa ...

  8. spring-in-action-初识反应式编程reactor

    一:反应式编程 1.反应式编程的优点 1)无阻塞 2)处理的数据可以是无限的 打水仗:  命令式编程:使用的是水气球.水气球的容量有限.把水气球装水,再扔向对方.如果想要更多的水,就需要更多的水气球. ...

  9. 解析sensor_msgs::PointCloud2 ROS点云数据

    1.一个仿真的点云数据 header: seq: 2116 stamp: secs: 1586919439 nsecs: 448866652 frame_id: "LidarSensor1& ...

  10. ES6的Promise用法

    一.是什么: promise是异步编程的一种解决方案,它是一个对象,可以获取异步操作的信息,它的出现改善了异步编程,避免了地狱回调,它比传统的解决方案回调函数和事件更合理和更强大 二.promise的 ...