首页 > 最新文献

Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation最新文献

英文 中文
Reverse engineering for reduction parallelization via semiring polynomials 通过半环多项式减少并行化的逆向工程
Akimasa Morihata, Shigeyuki Sato
Parallel reduction, which summarizes a given dataset, e.g., the total, average, and maximum, plays a crucial role in parallel programming. This paper presents a new approach, reverse engineering, to automatically discovering nontrivial parallel reductions in sequential programs. The body of the sequential reduction loop is regarded as a black box, and its input-output behaviors are sampled. If the behaviors correspond to a set of linear polynomials over a semiring, a divide-and-conquer parallel reduction is generated. Auxiliary reverse-engineering methods enable a long and nested loop body to be decomposed, which makes our parallelization scheme applicable to various types of reduction loops. This approach is not only simple and efficient but also agnostic to the details of the input program. Its potential is demonstrated through several use case scenarios. A proof-of-concept implementation successfully inferred linear polynomials for nearly all of the 74 benchmarks exhaustively collected from the literature. These characteristics and experimental results demonstrate the promise of the proposed approach, despite its inherent unsoundness.
并行约简(Parallel reduction)是对给定数据集的总结,例如,总数、平均值和最大值,在并行编程中起着至关重要的作用。本文提出了一种新的方法——逆向工程,来自动发现顺序程序中的非平凡并行约简。将序列约简回路的主体视为一个黑盒,对其输入-输出行为进行采样。如果行为对应于半环上的一组线性多项式,则生成分治并行约简。辅助的逆向工程方法可以分解长而嵌套的循环体,这使得我们的并行化方案适用于各种类型的还原循环。这种方法不仅简单有效,而且与输入程序的细节无关。通过几个用例场景演示了它的潜力。概念验证实现成功地为从文献中详尽收集的几乎所有74个基准推断出线性多项式。这些特征和实验结果证明了所提出的方法的前景,尽管其固有的不健全。
{"title":"Reverse engineering for reduction parallelization via semiring polynomials","authors":"Akimasa Morihata, Shigeyuki Sato","doi":"10.1145/3453483.3454079","DOIUrl":"https://doi.org/10.1145/3453483.3454079","url":null,"abstract":"Parallel reduction, which summarizes a given dataset, e.g., the total, average, and maximum, plays a crucial role in parallel programming. This paper presents a new approach, reverse engineering, to automatically discovering nontrivial parallel reductions in sequential programs. The body of the sequential reduction loop is regarded as a black box, and its input-output behaviors are sampled. If the behaviors correspond to a set of linear polynomials over a semiring, a divide-and-conquer parallel reduction is generated. Auxiliary reverse-engineering methods enable a long and nested loop body to be decomposed, which makes our parallelization scheme applicable to various types of reduction loops. This approach is not only simple and efficient but also agnostic to the details of the input program. Its potential is demonstrated through several use case scenarios. A proof-of-concept implementation successfully inferred linear polynomials for nearly all of the 74 benchmarks exhaustively collected from the literature. These characteristics and experimental results demonstrate the promise of the proposed approach, despite its inherent unsoundness.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2021-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"82153456","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Mirror: making lock-free data structures persistent 镜像:使无锁的数据结构持久化
Michal Friedman, E. Petrank, P. Ramalhete
With the recent launch of the Intel Optane memory platform, non-volatile main memory in the form of fast, dense, byte-addressable non-volatile memory has now become available. Nevertheless, designing crash-resilient algorithms and data structures is complex and error-prone as caches and machine registers are still volatile and the data residing in memory after a crash might not reflect a consistent view of the program state. This complex setting has often led to durable data structures being inefficient or incorrect, especially in the concurrent setting. In this paper, we present Mirror -- a simple, general automatic transformation that adds durability to lock-free data structures, with a low performance overhead. Moreover, in the current non-volatile main memory configuration, where non-volatile memory operates side-by-side with a standard fast DRAM, our mechanism exploits the hybrid system to substantially improve performance. Evaluation shows a significant performance advantage over NVTraverse, which is the state-of-the-art general transformation technique, and over Intel's concurrent lock-based key-value datastore. Unlike some previous transformations, Mirror does not require any restriction on the lock-free data structure format.
随着英特尔Optane内存平台最近的发布,快速、密集、字节可寻址的非易失性主存已经成为可能。然而,设计抗崩溃算法和数据结构是复杂且容易出错的,因为缓存和机器寄存器仍然是不稳定的,并且在崩溃后驻留在内存中的数据可能无法反映程序状态的一致视图。这种复杂的设置经常导致持久数据结构效率低下或不正确,特别是在并发设置中。在本文中,我们介绍了Mirror——一种简单、通用的自动转换,它为无锁数据结构增加了持久性,并且性能开销很低。此外,在当前的非易失性主存储器配置中,非易失性存储器与标准快速DRAM并行运行,我们的机制利用混合系统大大提高了性能。评估显示,与NVTraverse(最先进的通用转换技术)和Intel基于锁的并发键值数据存储相比,它具有显著的性能优势。与之前的一些转换不同,Mirror不需要对无锁数据结构格式进行任何限制。
{"title":"Mirror: making lock-free data structures persistent","authors":"Michal Friedman, E. Petrank, P. Ramalhete","doi":"10.1145/3453483.3454105","DOIUrl":"https://doi.org/10.1145/3453483.3454105","url":null,"abstract":"With the recent launch of the Intel Optane memory platform, non-volatile main memory in the form of fast, dense, byte-addressable non-volatile memory has now become available. Nevertheless, designing crash-resilient algorithms and data structures is complex and error-prone as caches and machine registers are still volatile and the data residing in memory after a crash might not reflect a consistent view of the program state. This complex setting has often led to durable data structures being inefficient or incorrect, especially in the concurrent setting. In this paper, we present Mirror -- a simple, general automatic transformation that adds durability to lock-free data structures, with a low performance overhead. Moreover, in the current non-volatile main memory configuration, where non-volatile memory operates side-by-side with a standard fast DRAM, our mechanism exploits the hybrid system to substantially improve performance. Evaluation shows a significant performance advantage over NVTraverse, which is the state-of-the-art general transformation technique, and over Intel's concurrent lock-based key-value datastore. Unlike some previous transformations, Mirror does not require any restriction on the lock-free data structure format.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2021-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89420465","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 29
When threads meet events: efficient and precise static race detection with origins 当线程遇到事件时:具有起源的高效和精确的静态竞争检测
Bozhen Liu, Peiming Liu, Yanze Li, Chia-che Tsai, Dilma Da Silva, Jeff Huang
Data races are among the worst bugs in software in that they exhibit non-deterministic symptoms and are notoriously difficult to detect. The problem is exacerbated by interactions between threads and events in real-world applications. We present a novel static analysis technique, O2, to detect data races in large complex multithreaded and event-driven software. O2 is powered by “origins”, an abstraction that unifies threads and events by treating them as entry points of code paths attributed with data pointers. Origins in most cases are inferred automatically, but can also be specified by developers. More importantly, origins provide an efficient way to precisely reason about shared memory and pointer aliases. Together with several important design choices for race detection, we have implemented O2 for both C/C++ and Java/Android applications and applied it to a wide range of open-source software. O2 has found new races in every single real-world code base we evaluated with, including Linux kernel, Redis, OVS, Memcached, Hadoop, Tomcat, ZooKeeper and Firefox Android. Moreover, O2 scales to millions of lines of code in a few minutes, on average 70x faster (up to 568x) compared to an existing static analysis tool from our prior work, and reduces false positives by 77%. We also compared O2 with the state-of-the-art static race detection tool, RacerD, showing highly promising results. At the time of writing, O2 has revealed more than 40 unique previously unknown races that have been confirmed or fixed by developers.
数据竞争是软件中最严重的错误之一,因为它们表现出不确定性症状,并且众所周知难以检测到。在实际应用程序中,线程和事件之间的交互加剧了这个问题。我们提出了一种新的静态分析技术O2,用于检测大型复杂多线程和事件驱动软件中的数据竞争。O2由“起源”提供支持,这是一种抽象,通过将线程和事件视为带有数据指针属性的代码路径的入口点来统一它们。在大多数情况下,起源是自动推断的,但也可以由开发人员指定。更重要的是,起源提供了一种有效的方法来精确地推断共享内存和指针别名。我们已经为C/ c++和Java/Android应用程序实现了O2,并将其应用于广泛的开源软件中。O2在我们评估的每一个真实世界的代码库中都发现了新的竞争,包括Linux内核、Redis、OVS、Memcached、Hadoop、Tomcat、ZooKeeper和Firefox Android。此外,O2在几分钟内扩展到数百万行代码,与我们之前工作的现有静态分析工具相比,平均速度快了70倍(最高568倍),并减少了77%的误报。我们还将O2与最先进的静态竞赛检测工具RacerD进行了比较,显示出非常有希望的结果。在撰写本文时,O2已经透露了40多个独特的以前未知的比赛,这些比赛已经被开发人员确认或修复。
{"title":"When threads meet events: efficient and precise static race detection with origins","authors":"Bozhen Liu, Peiming Liu, Yanze Li, Chia-che Tsai, Dilma Da Silva, Jeff Huang","doi":"10.1145/3453483.3454073","DOIUrl":"https://doi.org/10.1145/3453483.3454073","url":null,"abstract":"Data races are among the worst bugs in software in that they exhibit non-deterministic symptoms and are notoriously difficult to detect. The problem is exacerbated by interactions between threads and events in real-world applications. We present a novel static analysis technique, O2, to detect data races in large complex multithreaded and event-driven software. O2 is powered by “origins”, an abstraction that unifies threads and events by treating them as entry points of code paths attributed with data pointers. Origins in most cases are inferred automatically, but can also be specified by developers. More importantly, origins provide an efficient way to precisely reason about shared memory and pointer aliases. Together with several important design choices for race detection, we have implemented O2 for both C/C++ and Java/Android applications and applied it to a wide range of open-source software. O2 has found new races in every single real-world code base we evaluated with, including Linux kernel, Redis, OVS, Memcached, Hadoop, Tomcat, ZooKeeper and Firefox Android. Moreover, O2 scales to millions of lines of code in a few minutes, on average 70x faster (up to 568x) compared to an existing static analysis tool from our prior work, and reduces false positives by 77%. We also compared O2 with the state-of-the-art static race detection tool, RacerD, showing highly promising results. At the time of writing, O2 has revealed more than 40 unique previously unknown races that have been confirmed or fixed by developers.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2021-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"75262899","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 14
Transfinite Iris: resolving an existential dilemma of step-indexed separation logic 超限虹膜:解决阶梯索引分离逻辑的存在困境
Simon Spies, Lennard Gäher, Daniel Gratzer, Joseph Tassarotti, R. Krebbers, Derek Dreyer, L. Birkedal
Step-indexed separation logic has proven to be a powerful tool for modular reasoning about higher-order stateful programs. However, it has only been used to reason about safety properties, never liveness properties. In this paper, we observe that the inability of step-indexed separation logic to support liveness properties stems fundamentally from its failure to validate the existential property, connecting the meaning of existential quantification inside and outside the logic. We show how to validate the existential property—and thus enable liveness reasoning—by moving from finite step-indices (natural numbers) to transfinite step-indices (ordinals). Concretely, we transform the Coq-based step-indexed logic Iris to Transfinite Iris, and demonstrate its effectiveness in proving termination and termination-preserving refinement for higher-order stateful programs.
步骤索引分离逻辑已被证明是对高阶有状态程序进行模块化推理的强大工具。然而,它只被用来推断安全属性,而从未被用来推断生活属性。在本文中,我们观察到阶梯索引分离逻辑无法支持活动属性的根本原因是它无法验证存在属性,连接逻辑内外存在量化的意义。我们展示了如何通过从有限阶跃指数(自然数)到超越阶跃指数(序数)来验证存在性——从而实现活推理。具体而言,我们将基于coq的阶跃索引逻辑虹膜转化为超限虹膜,并证明了其在证明高阶有状态程序的终止和保持终止精化方面的有效性。
{"title":"Transfinite Iris: resolving an existential dilemma of step-indexed separation logic","authors":"Simon Spies, Lennard Gäher, Daniel Gratzer, Joseph Tassarotti, R. Krebbers, Derek Dreyer, L. Birkedal","doi":"10.1145/3453483.3454031","DOIUrl":"https://doi.org/10.1145/3453483.3454031","url":null,"abstract":"Step-indexed separation logic has proven to be a powerful tool for modular reasoning about higher-order stateful programs. However, it has only been used to reason about safety properties, never liveness properties. In this paper, we observe that the inability of step-indexed separation logic to support liveness properties stems fundamentally from its failure to validate the existential property, connecting the meaning of existential quantification inside and outside the logic. We show how to validate the existential property—and thus enable liveness reasoning—by moving from finite step-indices (natural numbers) to transfinite step-indices (ordinals). Concretely, we transform the Coq-based step-indexed logic Iris to Transfinite Iris, and demonstrate its effectiveness in proving termination and termination-preserving refinement for higher-order stateful programs.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2021-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"79019511","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 11
Compiling Stan to generative probabilistic languages and extension to deep probabilistic programming 将Stan编译为生成概率语言,并扩展到深度概率规划
Guillaume Baudart, Javier Burroni, Martin Hirzel, Louis Mandel, Avraham Shinnar
Stan is a probabilistic programming language that is popular in the statistics community, with a high-level syntax for expressing probabilistic models. Stan differs by nature from generative probabilistic programming languages like Church, Anglican, or Pyro. This paper presents a comprehensive compilation scheme to compile any Stan model to a generative language and proves its correctness. We use our compilation scheme to build two new backends for the Stanc3 compiler targeting Pyro and NumPyro. Experimental results show that the NumPyro backend yields a 2.3x speedup compared to Stan in geometric mean over 26 benchmarks. Building on Pyro we extend Stan with support for explicit variational inference guides and deep probabilistic models. That way, users familiar with Stan get access to new features without having to learn a fundamentally new language.
Stan是一种在统计社区中很流行的概率编程语言,具有用于表示概率模型的高级语法。Stan在本质上不同于Church、Anglican或Pyro等生成概率编程语言。本文提出了一种将任意Stan模型编译成生成语言的综合编译方案,并证明了其正确性。我们使用我们的编译方案为针对Pyro和NumPyro的Stanc3编译器构建两个新的后端。实验结果表明,在26个基准测试中,NumPyro后端比Stan的几何平均速度提高了2.3倍。在Pyro的基础上,我们扩展了Stan,支持显式变分推理指南和深度概率模型。通过这种方式,熟悉Stan的用户无需学习一门全新的语言就可以访问新功能。
{"title":"Compiling Stan to generative probabilistic languages and extension to deep probabilistic programming","authors":"Guillaume Baudart, Javier Burroni, Martin Hirzel, Louis Mandel, Avraham Shinnar","doi":"10.1145/3453483.3454058","DOIUrl":"https://doi.org/10.1145/3453483.3454058","url":null,"abstract":"Stan is a probabilistic programming language that is popular in the statistics community, with a high-level syntax for expressing probabilistic models. Stan differs by nature from generative probabilistic programming languages like Church, Anglican, or Pyro. This paper presents a comprehensive compilation scheme to compile any Stan model to a generative language and proves its correctness. We use our compilation scheme to build two new backends for the Stanc3 compiler targeting Pyro and NumPyro. Experimental results show that the NumPyro backend yields a 2.3x speedup compared to Stan in geometric mean over 26 benchmarks. Building on Pyro we extend Stan with support for explicit variational inference guides and deep probabilistic models. That way, users familiar with Stan get access to new features without having to learn a fundamentally new language.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2021-06-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"81773424","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 6
Example-guided synthesis of relational queries 以示例为指导的关系查询合成
Aalok Thakkar, Aaditya Naik, Nathaniel Sands, R. Alur, M. Naik, Mukund Raghothaman
Program synthesis tasks are commonly specified via input-output examples. Existing enumerative techniques for such tasks are primarily guided by program syntax and only make indirect use of the examples. We identify a class of synthesis algorithms for programming-by-examples, which we call Example-Guided Synthesis (EGS), that exploits latent structure in the provided examples while generating candidate programs. We present an instance of EGS for the synthesis of relational queries and evaluate it on 86 tasks from three application domains: knowledge discovery, program analysis, and database querying. Our evaluation shows that EGS outperforms state-of-the-art synthesizers based on enumerative search, constraint solving, and hybrid techniques in terms of synthesis time, quality of synthesized programs, and ability to prove unrealizability.
程序合成任务通常通过输入-输出示例来指定。用于此类任务的现有枚举技术主要由程序语法指导,并且只间接地使用示例。我们确定了一类用于实例编程的合成算法,我们称之为实例引导合成(EGS),它在生成候选程序时利用所提供示例中的潜在结构。我们提出了一个用于综合关系查询的EGS实例,并对来自三个应用领域的86个任务进行了评估:知识发现、程序分析和数据库查询。我们的评估表明,EGS在合成时间、合成程序的质量和证明不可实现性的能力方面优于基于枚举搜索、约束求解和混合技术的最先进的合成器。
{"title":"Example-guided synthesis of relational queries","authors":"Aalok Thakkar, Aaditya Naik, Nathaniel Sands, R. Alur, M. Naik, Mukund Raghothaman","doi":"10.1145/3453483.3454098","DOIUrl":"https://doi.org/10.1145/3453483.3454098","url":null,"abstract":"Program synthesis tasks are commonly specified via input-output examples. Existing enumerative techniques for such tasks are primarily guided by program syntax and only make indirect use of the examples. We identify a class of synthesis algorithms for programming-by-examples, which we call Example-Guided Synthesis (EGS), that exploits latent structure in the provided examples while generating candidate programs. We present an instance of EGS for the synthesis of relational queries and evaluate it on 86 tasks from three application domains: knowledge discovery, program analysis, and database querying. Our evaluation shows that EGS outperforms state-of-the-art synthesizers based on enumerative search, constraint solving, and hybrid techniques in terms of synthesis time, quality of synthesized programs, and ability to prove unrealizability.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2021-06-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"85549458","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 14
An efficient interpreter for Datalog by de-specializing relations 通过去专门化关系实现对Datalog的高效解释器
Xiaowen Hu, David Zhao, Herbert Jordan, Bernhard Scholz
Datalog is becoming increasingly popular as a standard tool for a variety of use cases. Modern Datalog engines can achieve high performance by specializing data structures for relational operations. For example, the Datalog engine Soufflé achieves high performance with a synthesizer that specializes data structures for relations. However, the synthesizer cannot always be deployed, and a fast interpreter is required. This work introduces the design and implementation of the Soufflé Tree Interpreter (STI). Key for the performance of the STI is the support for fast operations on relations. We obtain fast operations by de-specializing data structures so that they can work in a virtual execution environment. Our new interpreter achieves a competitive performance slowdown between 1.32 and 5.67× when compared to synthesized code. If compile time overheads of the synthesizer are also considered, the interpreter can be 6.46× faster on average for the first run.
Datalog作为各种用例的标准工具正变得越来越流行。现代Datalog引擎可以通过为关系操作专门化数据结构来实现高性能。例如,Datalog引擎souffl通过一个专门用于关系的数据结构的合成器实现了高性能。然而,合成器不能总是被部署,并且需要一个快速的解释器。本文介绍了souffl树解释器(STI)的设计与实现。STI性能的关键是支持对关系的快速操作。我们通过去专门化数据结构来获得快速的操作,这样它们就可以在虚拟执行环境中工作。与合成代码相比,我们的新解释器的性能降低了1.32到5.67倍。如果还考虑合成器的编译时间开销,解释器在第一次运行时平均可以快6.46倍。
{"title":"An efficient interpreter for Datalog by de-specializing relations","authors":"Xiaowen Hu, David Zhao, Herbert Jordan, Bernhard Scholz","doi":"10.1145/3453483.3454070","DOIUrl":"https://doi.org/10.1145/3453483.3454070","url":null,"abstract":"Datalog is becoming increasingly popular as a standard tool for a variety of use cases. Modern Datalog engines can achieve high performance by specializing data structures for relational operations. For example, the Datalog engine Soufflé achieves high performance with a synthesizer that specializes data structures for relations. However, the synthesizer cannot always be deployed, and a fast interpreter is required. This work introduces the design and implementation of the Soufflé Tree Interpreter (STI). Key for the performance of the STI is the support for fast operations on relations. We obtain fast operations by de-specializing data structures so that they can work in a virtual execution environment. Our new interpreter achieves a competitive performance slowdown between 1.32 and 5.67× when compared to synthesized code. If compile time overheads of the synthesizer are also considered, the interpreter can be 6.46× faster on average for the first run.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2021-06-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"84179089","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Hashing modulo alpha-equivalence 哈希模等价
Krzysztof Maziarz, Tom Ellis, A. Lawrence, A. Fitzgibbon, S. Jones
In many applications one wants to identify identical subtrees of a program syntax tree. This identification should ideally be robust to alpha-renaming of the program, but no existing technique has been shown to achieve this with good efficiency (better than O(n2) in expression size). We present a new, asymptotically efficient way to hash modulo alpha-equivalence. A key insight of our method is to use a weak (commutative) hash combiner at exactly one point in the construction, which admits an algorithm with O(n (logn)2) time complexity. We prove that the use of the commutative combiner nevertheless yields a strong hash with low collision probability. Numerical benchmarks attest to the asymptotic behaviour of the method.
在许多应用程序中,人们希望识别程序语法树的相同子树。理想情况下,这种识别应该对程序的alpha重命名具有鲁棒性,但是没有现有的技术能够以良好的效率实现这一点(表达式大小优于0 (n2))。我们提出了一种新的、渐近有效的哈希模等价方法。我们的方法的一个关键见解是在构造中的一个点上使用弱(交换)哈希组合器,这使得算法具有O(n (logn)2)时间复杂度。我们证明了交换组合子的使用仍然会产生一个低碰撞概率的强哈希。数值基准验证了该方法的渐近性。
{"title":"Hashing modulo alpha-equivalence","authors":"Krzysztof Maziarz, Tom Ellis, A. Lawrence, A. Fitzgibbon, S. Jones","doi":"10.1145/3453483.3454088","DOIUrl":"https://doi.org/10.1145/3453483.3454088","url":null,"abstract":"In many applications one wants to identify identical subtrees of a program syntax tree. This identification should ideally be robust to alpha-renaming of the program, but no existing technique has been shown to achieve this with good efficiency (better than O(n2) in expression size). We present a new, asymptotically efficient way to hash modulo alpha-equivalence. A key insight of our method is to use a weak (commutative) hash combiner at exactly one point in the construction, which admits an algorithm with O(n (logn)2) time complexity. We prove that the use of the commutative combiner nevertheless yields a strong hash with low collision probability. Numerical benchmarks attest to the asymptotic behaviour of the method.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2021-05-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78544546","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
Vectorized secure evaluation of decision forests 决策林的矢量化安全评价
Raghav Malik, Vidushi Singhal, Benjamin Gottfried, Milind Kulkarni
As the demand for machine learning–based inference increases in tandem with concerns about privacy, there is a growing recognition of the need for secure machine learning, in which secret models can be used to classify private data without the model or data being leaked. Fully Homomorphic Encryption (FHE) allows arbitrary computation to be done over encrypted data, providing an attractive approach to providing such secure inference. While such computation is often orders of magnitude slower than its plaintext counterpart, the ability of FHE cryptosystems to do ciphertext packing—that is, encrypting an entire vector of plaintexts such that operations are evaluated elementwise on the vector—helps ameliorate this overhead, effectively creating a SIMD architecture where computation can be vectorized for more efficient evaluation. Most recent research in this area has targeted regular, easily vectorizable neural network models. Applying similar techniques to irregular ML models such as decision forests remains unexplored, due to their complex, hard-to-vectorize structures. In this paper we present COPSE, the first system that exploits ciphertext packing to perform decision-forest inference. COPSE consists of a staging compiler that automatically restructures and compiles decision forest models down to a new set of vectorizable primitives for secure inference. We find that COPSE’s compiled models outperform the state of the art across a range of decision forest models, often by more than an order of magnitude, while still scaling well.
随着对基于机器学习的推理的需求随着对隐私的担忧而增加,人们越来越认识到需要安全的机器学习,其中秘密模型可以用于对私有数据进行分类,而不会泄漏模型或数据。完全同态加密(FHE)允许对加密数据进行任意计算,为提供这种安全推断提供了一种有吸引力的方法。虽然这种计算通常比明文计算慢几个数量级,但FHE密码系统执行密文打包的能力(即加密明文的整个向量,以便在向量上按元素计算操作)有助于改善这种开销,有效地创建SIMD体系结构,其中可以对计算进行矢量化,以便更有效地进行计算。该领域的最新研究主要针对规则的、易于向量化的神经网络模型。将类似的技术应用于不规则的机器学习模型,如决策森林,由于其复杂的,难以矢量化的结构,仍然未被探索。在本文中,我们提出了COPSE,这是第一个利用密文打包来执行决策森林推理的系统。COPSE由一个分段编译器组成,该编译器可以自动地重组和编译决策林模型,将其简化为一组新的可向量化原语,以进行安全推理。我们发现,在一系列决策森林模型中,COPSE的编译模型的表现优于目前的技术水平,通常超过一个数量级,同时仍然可以很好地扩展。
{"title":"Vectorized secure evaluation of decision forests","authors":"Raghav Malik, Vidushi Singhal, Benjamin Gottfried, Milind Kulkarni","doi":"10.1145/3453483.3454094","DOIUrl":"https://doi.org/10.1145/3453483.3454094","url":null,"abstract":"As the demand for machine learning–based inference increases in tandem with concerns about privacy, there is a growing recognition of the need for secure machine learning, in which secret models can be used to classify private data without the model or data being leaked. Fully Homomorphic Encryption (FHE) allows arbitrary computation to be done over encrypted data, providing an attractive approach to providing such secure inference. While such computation is often orders of magnitude slower than its plaintext counterpart, the ability of FHE cryptosystems to do ciphertext packing—that is, encrypting an entire vector of plaintexts such that operations are evaluated elementwise on the vector—helps ameliorate this overhead, effectively creating a SIMD architecture where computation can be vectorized for more efficient evaluation. Most recent research in this area has targeted regular, easily vectorizable neural network models. Applying similar techniques to irregular ML models such as decision forests remains unexplored, due to their complex, hard-to-vectorize structures. In this paper we present COPSE, the first system that exploits ciphertext packing to perform decision-forest inference. COPSE consists of a staging compiler that automatically restructures and compiles decision forest models down to a new set of vectorizable primitives for secure inference. We find that COPSE’s compiled models outperform the state of the art across a range of decision forest models, often by more than an order of magnitude, while still scaling well.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2021-04-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"74410402","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
Automated conformance testing for JavaScript engines via deep compiler fuzzing 通过深度编译器模糊测试对JavaScript引擎进行自动化一致性测试
Guixin Ye, Zhanyong Tang, Shin Hwei Tan, Songfang Huang, Dingyi Fang, Xiaoyang Sun, Lizhong Bian, Haibo Wang, Zheng Wang
JavaScript (JS) is a popular, platform-independent programming language. To ensure the interoperability of JS programs across different platforms, the implementation of a JS engine should conform to the ECMAScript standard. However, doing so is challenging as there are many subtle definitions of API behaviors, and the definitions keep evolving. We present COMFORT, a new compiler fuzzing framework for detecting JS engine bugs and behaviors that deviate from the ECMAScript standard. COMFORT leverages the recent advance in deep learning-based language models to automatically generate JS test code. As a departure from prior fuzzers, COMFORT utilizes the well-structured ECMAScript specifications to automatically generate test data along with the test programs to expose bugs that could be overlooked by the developers or manually written test cases. COMFORT then applies differential testing methodologies on the generated test cases to expose standard conformance bugs. We apply COMFORT to ten mainstream JS engines. In 200 hours of automated concurrent testing runs, we discover bugs in all tested JS engines. We had identified 158 unique JS engine bugs, of which 129 have been verified, and 115 have already been fixed by the developers. Furthermore, 21 of the COMFORT-generated test cases have been added to Test262, the official ECMAScript conformance test suite.
JavaScript (JS)是一种流行的、独立于平台的编程语言。为了确保JS程序在不同平台上的互操作性,JS引擎的实现应该符合ECMAScript标准。然而,这样做是具有挑战性的,因为API行为有许多微妙的定义,而且这些定义还在不断发展。我们提出了COMFORT,一个新的编译器模糊测试框架,用于检测JS引擎错误和偏离ECMAScript标准的行为。COMFORT利用基于深度学习的语言模型的最新进展来自动生成JS测试代码。与之前的fuzzers不同,COMFORT利用结构良好的ECMAScript规范来自动生成测试数据以及测试程序,以暴露开发人员或手动编写的测试用例可能忽略的错误。然后COMFORT对生成的测试用例应用不同的测试方法,以暴露标准一致性错误。我们将COMFORT应用于10个主流JS引擎。在200小时的自动化并发测试运行中,我们发现了所有被测试JS引擎中的bug。我们发现了158个独特的JS引擎bug,其中129个已经被验证,115个已经被开发者修复。此外,comfort生成的21个测试用例已经添加到Test262(官方ECMAScript一致性测试套件)中。
{"title":"Automated conformance testing for JavaScript engines via deep compiler fuzzing","authors":"Guixin Ye, Zhanyong Tang, Shin Hwei Tan, Songfang Huang, Dingyi Fang, Xiaoyang Sun, Lizhong Bian, Haibo Wang, Zheng Wang","doi":"10.1145/3453483.3454054","DOIUrl":"https://doi.org/10.1145/3453483.3454054","url":null,"abstract":"JavaScript (JS) is a popular, platform-independent programming language. To ensure the interoperability of JS programs across different platforms, the implementation of a JS engine should conform to the ECMAScript standard. However, doing so is challenging as there are many subtle definitions of API behaviors, and the definitions keep evolving. We present COMFORT, a new compiler fuzzing framework for detecting JS engine bugs and behaviors that deviate from the ECMAScript standard. COMFORT leverages the recent advance in deep learning-based language models to automatically generate JS test code. As a departure from prior fuzzers, COMFORT utilizes the well-structured ECMAScript specifications to automatically generate test data along with the test programs to expose bugs that could be overlooked by the developers or manually written test cases. COMFORT then applies differential testing methodologies on the generated test cases to expose standard conformance bugs. We apply COMFORT to ten mainstream JS engines. In 200 hours of automated concurrent testing runs, we discover bugs in all tested JS engines. We had identified 158 unique JS engine bugs, of which 129 have been verified, and 115 have already been fixed by the developers. Furthermore, 21 of the COMFORT-generated test cases have been added to Test262, the official ECMAScript conformance test suite.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2021-04-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"84626938","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 41
期刊
Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1