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. solidity 内存(memory) 可变数组的增删改查 操作

    // SPDX-License-Identifier: MIT pragma solidity ^0.8.9; library Array { function push(uint256[] memo ...

  2. [LeetCode]螺旋矩阵

    题目 代码 class Solution { public: vector<int> spiralOrder(vector<vector<int>>& ma ...

  3. 获取对象的方式-Calendar类的常用成员方法

    获取对象的方式 java.utiL.calendar类:日历类caLendar类是一个抽象类,里边提供了很多操作日历字段的方法(YEAR.MONTH.DAY_OF_MONTH.HOUR )CaLend ...

  4. 动态代理-cglib分析

    生成代理类文件的方式 jvm添加此启动参数,后面就是代理类class生成的地址 -Dcglib.debugLocation=~/baldhead/java/dynamic-proxy-cglib/sr ...

  5. myatbis的一个好的封装

    package com.pj.project4sp; import org.springframework.beans.factory.annotation.Autowired; import org ...

  6. Visual Studio更改项目文件夹名称

    一.VS打开项目解决方案(按以下顺序操作) PS:如果已经出错,打不开.sln文件,就从第三步开始操作,进入目录更改对应其.csproj文件名称即可 1.选择要更改的项目或类库,右键属性,更改程序集名 ...

  7. 随机森林RF模型超参数的优化:Python实现

      本文介绍基于Python的随机森林(Random Forest,RF)回归代码,以及模型超参数(包括决策树个数与最大深度.最小分离样本数.最小叶子节点样本数.最大分离特征数等)自动优化的代码.   ...

  8. C++练习2 强制类型转换

    const可以把有关的数据定义为常量. const类型可以修饰:对象,指针,引用 使用const_cast为强制类型转换,将常量强制转换非常量. 1 #include <iostream> ...

  9. SpringCloud 小知识和历史

    六Spring Cloud 回顾之前的: javaSE 数据库 前端 Servlet HTTP Mybatis Spring SpringMVC SpringBoot Dubbo.Zookeeper. ...

  10. 详解神经网络基础部件BN层

    摘要:在深度神经网络训练的过程中,由于网络中参数变化而引起网络中间层数据分布发生变化的这一过程被称为内部协变量偏移(Internal Covariate Shift),而 BN 可以解决这个问题. 本 ...