首页 > 最新文献

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

英文 中文
Frequent background polling on a shared thread, using light-weight compiler interrupts 使用轻量级编译器中断,对共享线程进行频繁的后台轮询
Nilanjana Basu, C. Montanari, Jakob Eriksson
Recent work in networking, storage and multi-threading has demonstrated improved performance and scalability by replacing kernel-mode interrupts with high-rate user-space polling. Typically, such polling is performed by a dedicated core. Compiler Interrupts (CIs) instead enable efficient, automatic high-rate polling on a shared thread, which performs other work between polls. CIs are instrumentation-based and light-weight, allowing frequent interrupts with little performance impact. For example, when targeting a 5,000 cycle interval, the median overhead of our fastest CI design is 4% vs. 800% for hardware interrupts, across programs in the SPLASH-2, Phoenix and Parsec benchmark suites running with 32 threads. We evaluate CIs on three systems-level applications: (a) kernel bypass networking with mTCP, (b) joint kernel bypass networking and CPU scheduling with Shenango, and (c) delegation, a message-passing alternative to locking, with FFWD. For each application, we find that CIs offer compelling qualitative and quantitative improvements over the current state of the art. For example, CI-based mTCP achieves ≈2× stock mTCP throughput on a sample HTTP application.
最近在网络、存储和多线程方面的工作已经证明,通过用高速率用户空间轮询取代内核模式中断,可以提高性能和可伸缩性。通常,此类轮询由专用核心执行。相反,编译器中断(Compiler Interrupts, ci)在共享线程上启用高效、自动的高速率轮询,在轮询之间执行其他工作。ci是基于仪器的轻量级的,允许频繁的中断而对性能的影响很小。例如,当目标是5000个周期间隔时,我们最快的CI设计的中位数开销是4%,而硬件中断的中位数开销是800%,在使用32个线程运行的SPLASH-2、Phoenix和Parsec基准套件中的程序中。我们在三个系统级应用程序上评估ci:(a)使用mTCP的内核旁路网络,(b)使用Shenango的联合内核旁路网络和CPU调度,以及(c)使用FFWD的委托,这是一种消息传递替代锁定。对于每个应用程序,我们发现ci提供了令人信服的定性和定量改进,超过了当前的艺术状态。例如,基于ci的mTCP在一个示例HTTP应用程序上实现了≈2倍的mTCP吞吐量。
{"title":"Frequent background polling on a shared thread, using light-weight compiler interrupts","authors":"Nilanjana Basu, C. Montanari, Jakob Eriksson","doi":"10.1145/3453483.3454107","DOIUrl":"https://doi.org/10.1145/3453483.3454107","url":null,"abstract":"Recent work in networking, storage and multi-threading has demonstrated improved performance and scalability by replacing kernel-mode interrupts with high-rate user-space polling. Typically, such polling is performed by a dedicated core. Compiler Interrupts (CIs) instead enable efficient, automatic high-rate polling on a shared thread, which performs other work between polls. CIs are instrumentation-based and light-weight, allowing frequent interrupts with little performance impact. For example, when targeting a 5,000 cycle interval, the median overhead of our fastest CI design is 4% vs. 800% for hardware interrupts, across programs in the SPLASH-2, Phoenix and Parsec benchmark suites running with 32 threads. We evaluate CIs on three systems-level applications: (a) kernel bypass networking with mTCP, (b) joint kernel bypass networking and CPU scheduling with Shenango, and (c) delegation, a message-passing alternative to locking, with FFWD. For each application, we find that CIs offer compelling qualitative and quantitative improvements over the current state of the art. For example, CI-based mTCP achieves ≈2× stock mTCP throughput on a sample HTTP application.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":"11 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2021-06-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"82170783","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}
引用次数: 2
Practical smart contract sharding with ownership and commutativity analysis 具有所有权和交换性分析的实用智能合约分片
George Pîrlea, Amrit Kumar, Ilya Sergey
Sharding is a popular way to achieve scalability in blockchain protocols, increasing their throughput by partitioning the set of transaction validators into a number of smaller committees, splitting the workload. Existing approaches for blockchain sharding, however, do not scale well when concurrent transactions alter the same replicated state component—a common scenario in Ethereum-style smart contracts. We propose a novel approach for efficiently sharding such transactions. It is based on a folklore idea: state-manipulating atomic operations that commute can be processed in parallel, with their cumulative result defined deterministically, while executing non-commuting operations requires one to own the state they alter. We present CoSplit—a static program analysis tool that soundly infers ownership and commutativity summaries for smart contracts and translates those summaries to sharding signatures that are used by the blockchain protocol to maximise parallelism. Our evaluation shows that using CoSplit introduces negligible overhead to the transaction validation cost, while the inferred signatures allow the system to achieve a significant increase in transaction processing throughput for real-world smart contracts.
分片是区块链协议中实现可伸缩性的一种流行方法,通过将事务验证器集划分为许多较小的委员会来增加吞吐量,从而分散工作负载。然而,当并发交易改变相同的复制状态组件时,区块链分片的现有方法不能很好地扩展——这是以太坊风格的智能合约中的常见场景。我们提出了一种有效分片此类交易的新方法。它基于一种民间思想:可以并行处理交换的状态操纵原子操作,其累积结果确定地定义,而执行非交换操作则需要拥有它们所改变的状态。我们提出了cosplit——一个静态程序分析工具,它可以很好地推断智能合约的所有权和交换性摘要,并将这些摘要转换为区块链协议使用的分片签名,以最大限度地提高并行性。我们的评估表明,使用CoSplit对交易验证成本的开销可以忽略不计,而推断的签名允许系统显著提高现实世界智能合约的交易处理吞吐量。
{"title":"Practical smart contract sharding with ownership and commutativity analysis","authors":"George Pîrlea, Amrit Kumar, Ilya Sergey","doi":"10.1145/3453483.3454112","DOIUrl":"https://doi.org/10.1145/3453483.3454112","url":null,"abstract":"Sharding is a popular way to achieve scalability in blockchain protocols, increasing their throughput by partitioning the set of transaction validators into a number of smaller committees, splitting the workload. Existing approaches for blockchain sharding, however, do not scale well when concurrent transactions alter the same replicated state component—a common scenario in Ethereum-style smart contracts. We propose a novel approach for efficiently sharding such transactions. It is based on a folklore idea: state-manipulating atomic operations that commute can be processed in parallel, with their cumulative result defined deterministically, while executing non-commuting operations requires one to own the state they alter. We present CoSplit—a static program analysis tool that soundly infers ownership and commutativity summaries for smart contracts and translates those summaries to sharding signatures that are used by the blockchain protocol to maximise parallelism. Our evaluation shows that using CoSplit introduces negligible overhead to the transaction validation cost, while the inferred signatures allow the system to achieve a significant increase in transaction processing throughput for real-world smart contracts.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":"430 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2021-06-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"83600411","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}
引用次数: 20
Synthesizing data structure refinements from integrity constraints 从完整性约束中综合数据结构改进
Shankara Pailoor, Yuepeng Wang, Xinyu Wang, Işıl Dillig
Implementations of many data structures use several correlated fields to improve their performance; however, inconsistencies between these fields can be a source of serious program errors. To address this problem, we propose a new technique for automatically refining data structures from integrity constraints. In particular, consider a data structure D with fields F and methods M, as well as a new set of auxiliary fields F′ that should be added to D. Given this input and an integrity constraint Φ relating F and F′, our method automatically generates a refinement of D that satisfies the provided integrity constraint. Our method is based on a modular instantiation of the CEGIS paradigm and uses a novel inductive synthesizer that augments top-down search with three key ideas. First, it computes necessary preconditions of partial programs to dramatically prune its search space. Second, it augments the grammar with promising new productions by leveraging the computed preconditions. Third, it guides top-down search using a probabilistic context-free grammar obtained by statically analyzing the integrity checking function and the original code base. We evaluated our method on 25 data structures from popular Java projects and show that our method can successfully refine 23 of them. We also compare our method against two state-of-the-art synthesis tools and perform an ablation study to justify our design choices. Our evaluation shows that (1) our method is successful at refining many data structure implementations in the wild, (2) it advances the state-of-the-art in synthesis, and (3) our proposed ideas are crucial for making this technique practical.
许多数据结构的实现使用多个相关字段来提高性能;但是,这些字段之间的不一致可能会导致严重的程序错误。为了解决这个问题,我们提出了一种从完整性约束中自动提炼数据结构的新技术。具体来说,考虑一个具有字段F和方法M的数据结构D,以及应该添加到D的一组新的辅助字段F '。给定此输入和与F和F '相关的完整性约束Φ,我们的方法会自动生成满足所提供的完整性约束的D的细化。我们的方法基于CEGIS范例的模块化实例化,并使用一种新的归纳合成器,该合成器通过三个关键思想增强了自上而下的搜索。首先,它计算部分程序的必要前提条件,以大幅减少其搜索空间。其次,它通过利用计算的先决条件,用有希望的新结果来增强语法。第三,它通过静态分析完整性检查函数和原始代码库获得的概率上下文无关语法来指导自顶向下搜索。我们在流行的Java项目中的25个数据结构上评估了我们的方法,并表明我们的方法可以成功地改进其中的23个。我们还将我们的方法与两种最先进的合成工具进行了比较,并进行了消融研究,以证明我们的设计选择是正确的。我们的评估表明:(1)我们的方法在精炼许多野外数据结构实现方面是成功的,(2)它在综合方面推进了最先进的技术,(3)我们提出的想法对于使该技术实用至关重要。
{"title":"Synthesizing data structure refinements from integrity constraints","authors":"Shankara Pailoor, Yuepeng Wang, Xinyu Wang, Işıl Dillig","doi":"10.1145/3453483.3454063","DOIUrl":"https://doi.org/10.1145/3453483.3454063","url":null,"abstract":"Implementations of many data structures use several correlated fields to improve their performance; however, inconsistencies between these fields can be a source of serious program errors. To address this problem, we propose a new technique for automatically refining data structures from integrity constraints. In particular, consider a data structure D with fields F and methods M, as well as a new set of auxiliary fields F′ that should be added to D. Given this input and an integrity constraint Φ relating F and F′, our method automatically generates a refinement of D that satisfies the provided integrity constraint. Our method is based on a modular instantiation of the CEGIS paradigm and uses a novel inductive synthesizer that augments top-down search with three key ideas. First, it computes necessary preconditions of partial programs to dramatically prune its search space. Second, it augments the grammar with promising new productions by leveraging the computed preconditions. Third, it guides top-down search using a probabilistic context-free grammar obtained by statically analyzing the integrity checking function and the original code base. We evaluated our method on 25 data structures from popular Java projects and show that our method can successfully refine 23 of them. We also compare our method against two state-of-the-art synthesis tools and perform an ablation study to justify our design choices. Our evaluation shows that (1) our method is successful at refining many data structure implementations in the wild, (2) it advances the state-of-the-art in synthesis, and (3) our proposed ideas are crucial for making this technique practical.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":"11 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2021-06-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"91082715","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}
引用次数: 7
Fluid: a framework for approximate concurrency via controlled dependency relaxation 流体:通过控制依赖性放松实现近似并发的框架
Huaipan Jiang, Haibo Zhang, Xulong Tang, V. Govindaraj, J. Sampson, M. Kandemir, Danfeng Zhang
In this work, we introduce the Fluid framework, a set of language, compiler and runtime extensions that allow for the expression of regions within which dataflow dependencies can be approximated in a disciplined manner. Our framework allows the eager execution of dependent tasks before their inputs have finalized in order to capitalize on situations where an eagerly-consumed input has a high probability of sufficiently resembling the value or structure of the final value that would have been produced in a conservative/precise execution schedule. We introduce controlled access to the early consumption of intermediate values and provide hooks for user-specified quality assurance mechanisms that can automatically enforce re-execution of eagerly-executed tasks if their output values do not meet heuristic expectations. Our experimental analysis indicates that the fluidized versions of the applications bring 22.2% average execution time improvements, over their original counterparts, under the default values of our fluidization parameters. The Fluid approach is largely orthogonal to approaches that aim to reduce the task effort itself and we show that utilizing the Fluid framework can yield benefits for both originally precise and originally approximate versions of computation.
在这项工作中,我们引入了Fluid框架,这是一组语言、编译器和运行时扩展,允许以一种有纪律的方式近似地表达数据流依赖关系的区域。我们的框架允许在依赖任务的输入完成之前急切地执行,以便利用在保守/精确执行计划中产生的最终值的值或结构的高概率的情况。我们引入了对中间值的早期消费的受控访问,并为用户指定的质量保证机制提供了挂钩,如果它们的输出值不符合启发式期望,这些机制可以自动强制重新执行急切执行的任务。我们的实验分析表明,在我们的流化参数的默认值下,应用程序的流化版本比原始版本的平均执行时间提高了22.2%。Fluid方法与旨在减少任务工作量的方法在很大程度上是正交的,我们表明,利用Fluid框架可以为最初精确的和最初近似的计算版本带来好处。
{"title":"Fluid: a framework for approximate concurrency via controlled dependency relaxation","authors":"Huaipan Jiang, Haibo Zhang, Xulong Tang, V. Govindaraj, J. Sampson, M. Kandemir, Danfeng Zhang","doi":"10.1145/3453483.3454042","DOIUrl":"https://doi.org/10.1145/3453483.3454042","url":null,"abstract":"In this work, we introduce the Fluid framework, a set of language, compiler and runtime extensions that allow for the expression of regions within which dataflow dependencies can be approximated in a disciplined manner. Our framework allows the eager execution of dependent tasks before their inputs have finalized in order to capitalize on situations where an eagerly-consumed input has a high probability of sufficiently resembling the value or structure of the final value that would have been produced in a conservative/precise execution schedule. We introduce controlled access to the early consumption of intermediate values and provide hooks for user-specified quality assurance mechanisms that can automatically enforce re-execution of eagerly-executed tasks if their output values do not meet heuristic expectations. Our experimental analysis indicates that the fluidized versions of the applications bring 22.2% average execution time improvements, over their original counterparts, under the default values of our fluidization parameters. The Fluid approach is largely orthogonal to approaches that aim to reduce the task effort itself and we show that utilizing the Fluid framework can yield benefits for both originally precise and originally approximate versions of computation.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":"18 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2021-06-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"74373132","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}
引用次数: 0
Bliss: auto-tuning complex applications using a pool of diverse lightweight learning models Bliss:使用各种轻量级学习模型池自动调整复杂的应用程序
Rohan Basu Roy, Tirthak Patel, V. Gadepally, Devesh Tiwari
As parallel applications become more complex, auto-tuning becomes more desirable, challenging, and time-consuming. We propose, Bliss, a novel solution for auto-tuning parallel applications without requiring apriori information about applications, domain-specific knowledge, or instrumentation. Bliss demonstrates how to leverage a pool of Bayesian Optimization models to find the near-optimal parameter setting 1.64× faster than the state-of-the-art approaches.
随着并行应用程序变得越来越复杂,自动调优变得更加需要、更具挑战性和耗时。我们提出Bliss,一种新的解决方案,用于自动调优并行应用程序,而不需要有关应用程序的先验信息、特定于领域的知识或工具。Bliss演示了如何利用贝叶斯优化模型池来找到接近最优的参数设置,比最先进的方法快1.64倍。
{"title":"Bliss: auto-tuning complex applications using a pool of diverse lightweight learning models","authors":"Rohan Basu Roy, Tirthak Patel, V. Gadepally, Devesh Tiwari","doi":"10.1145/3453483.3454109","DOIUrl":"https://doi.org/10.1145/3453483.3454109","url":null,"abstract":"As parallel applications become more complex, auto-tuning becomes more desirable, challenging, and time-consuming. We propose, Bliss, a novel solution for auto-tuning parallel applications without requiring apriori information about applications, domain-specific knowledge, or instrumentation. Bliss demonstrates how to leverage a pool of Bayesian Optimization models to find the near-optimal parameter setting 1.64× faster than the state-of-the-art approaches.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":"4 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2021-06-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"74820034","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}
引用次数: 30
Phased synthesis of divide and conquer programs 分阶段合成的分而治之计划
Azadeh Farzan, Victor Nicolet
We propose a fully automated method that takes as input an iterative or recursive reference implementation and produces divide-and-conquer implementations that are functionally equivalent to the input. Three interdependent components have to be synthesized: a function that divides the original problem instance, a function that solves each sub-instance, and a function that combines the results of sub-computations. We propose a methodology that splits the synthesis problem into three successive phases, each with a substantially reduced state space compared to the original monolithic task, and therefore substantially more tractable. Our methodology is implemented as an addition to the existing synthesis tool Parsynt, and we demonstrate the efficacy of it by synthesizing highly nontrivial divide-and-conquer implementations of a set of benchmarks fully automatically.
我们提出了一种完全自动化的方法,该方法将迭代或递归的参考实现作为输入,并产生在功能上等同于输入的分治实现。必须综合三个相互依赖的组件:划分原始问题实例的函数,解决每个子实例的函数,以及组合子计算结果的函数。我们提出了一种方法,将综合问题分为三个连续的阶段,与原始的单块任务相比,每个阶段的状态空间都大大减少,因此更易于处理。我们的方法是作为现有合成工具Parsynt的补充实现的,我们通过完全自动地合成一组基准的高度重要的分而治之的实现来证明它的有效性。
{"title":"Phased synthesis of divide and conquer programs","authors":"Azadeh Farzan, Victor Nicolet","doi":"10.1145/3453483.3454089","DOIUrl":"https://doi.org/10.1145/3453483.3454089","url":null,"abstract":"We propose a fully automated method that takes as input an iterative or recursive reference implementation and produces divide-and-conquer implementations that are functionally equivalent to the input. Three interdependent components have to be synthesized: a function that divides the original problem instance, a function that solves each sub-instance, and a function that combines the results of sub-computations. We propose a methodology that splits the synthesis problem into three successive phases, each with a substantially reduced state space compared to the original monolithic task, and therefore substantially more tractable. Our methodology is implemented as an addition to the existing synthesis tool Parsynt, and we demonstrate the efficacy of it by synthesizing highly nontrivial divide-and-conquer implementations of a set of benchmarks fully automatically.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":"45 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2021-06-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"81611812","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}
引用次数: 12
Specification synthesis with constrained Horn clauses 约束Horn子句的规范综合
Sumanth Prabhu, Grigory Fedyukovich, Kumar Madhukar, D. D'Souza
The problem of synthesizing specifications of undefined procedures has a broad range of applications, but the usefulness of the generated specifications depends on their quality. In this paper, we propose a technique for finding maximal and non-vacuous specifications. Maximality allows for more choices for implementations of undefined procedures, and non-vacuity ensures that safety assertions are reachable. To handle programs with complex control flow, our technique discovers not only specifications but also inductive invariants. Our iterative algorithm lazily generalizes non-vacuous specifications in a counterexample-guided loop. The key component of our technique is an effective non-vacuous specification synthesis algorithm. We have implemented the approach in a tool called HornSpec, taking as input systems of constrained Horn clauses. We have experimentally demonstrated the tool's effectiveness, efficiency, and the quality of generated specifications on a range of benchmarks.
未定义过程的综合规范问题具有广泛的应用范围,但生成的规范的有用性取决于它们的质量。在本文中,我们提出了一种寻找最大和非空洞规范的技术。最大值为未定义过程的实现提供了更多选择,非空性确保了安全断言的可达性。为了处理具有复杂控制流的程序,我们的技术不仅发现规范,而且发现归纳不变量。我们的迭代算法在反例引导的循环中惰性地泛化非空洞规范。该技术的关键部分是一种有效的非真空规格综合算法。我们已经在一个叫做HornSpec的工具中实现了这种方法,将约束的Horn子句作为输入系统。我们已经通过实验证明了该工具的有效性、效率,以及在一系列基准测试中生成规范的质量。
{"title":"Specification synthesis with constrained Horn clauses","authors":"Sumanth Prabhu, Grigory Fedyukovich, Kumar Madhukar, D. D'Souza","doi":"10.1145/3453483.3454104","DOIUrl":"https://doi.org/10.1145/3453483.3454104","url":null,"abstract":"The problem of synthesizing specifications of undefined procedures has a broad range of applications, but the usefulness of the generated specifications depends on their quality. In this paper, we propose a technique for finding maximal and non-vacuous specifications. Maximality allows for more choices for implementations of undefined procedures, and non-vacuity ensures that safety assertions are reachable. To handle programs with complex control flow, our technique discovers not only specifications but also inductive invariants. Our iterative algorithm lazily generalizes non-vacuous specifications in a counterexample-guided loop. The key component of our technique is an effective non-vacuous specification synthesis algorithm. We have implemented the approach in a tool called HornSpec, taking as input systems of constrained Horn clauses. We have experimentally demonstrated the tool's effectiveness, efficiency, and the quality of generated specifications on a range of benchmarks.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":"165 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2021-06-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"86216757","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
Cyclic program synthesis 循环程序合成
Shachar Itzhaky, Hila Peleg, N. Polikarpova, R. Rowe, Ilya Sergey
We describe the first approach to automatically synthesizing heap-manipulating programs with auxiliary recursive procedures. Such procedures occur routinely in data structure transformations (e.g., flattening a tree into a list) or traversals of composite structures (e.g., n-ary trees). Our approach, dubbed cyclic program synthesis, enhances deductive program synthesis with a novel application of cyclic proofs. Specifically, we observe that the machinery used to form cycles in cyclic proofs can be reused to systematically and efficiently abduce recursive auxiliary procedures. We develop the theory of cyclic program synthesis by extending Synthetic Separation Logic (SSL), a logical framework for deductive synthesis of heap-manipulating programs from Separation Logic specifications. We implement our approach as a tool called Cypress, and showcase it by automatically synthesizing a number of programs manipulating linked data structures using recursive auxiliary procedures and mutual recursion, many of which were beyond the reach of existing program synthesis tools.
我们描述了用辅助递归过程自动合成堆操作程序的第一种方法。这样的过程通常发生在数据结构转换(例如,将树扁平化为列表)或复合结构的遍历(例如,n元树)中。我们的方法,被称为循环程序合成,通过循环证明的新应用增强了演绎程序合成。具体来说,我们观察到循环证明中用于形成循环的机制可以被重复使用,以系统有效地推导递归辅助过程。通过扩展合成分离逻辑(SSL),我们发展了循环程序合成理论,SSL是一个从分离逻辑规范中演绎合成堆操作程序的逻辑框架。我们将我们的方法实现为一个名为Cypress的工具,并通过使用递归辅助过程和相互递归自动合成许多程序来展示它,这些程序使用递归辅助过程和相互递归来操作链接数据结构,其中许多是现有程序合成工具无法实现的。
{"title":"Cyclic program synthesis","authors":"Shachar Itzhaky, Hila Peleg, N. Polikarpova, R. Rowe, Ilya Sergey","doi":"10.1145/3453483.3454087","DOIUrl":"https://doi.org/10.1145/3453483.3454087","url":null,"abstract":"We describe the first approach to automatically synthesizing heap-manipulating programs with auxiliary recursive procedures. Such procedures occur routinely in data structure transformations (e.g., flattening a tree into a list) or traversals of composite structures (e.g., n-ary trees). Our approach, dubbed cyclic program synthesis, enhances deductive program synthesis with a novel application of cyclic proofs. Specifically, we observe that the machinery used to form cycles in cyclic proofs can be reused to systematically and efficiently abduce recursive auxiliary procedures. We develop the theory of cyclic program synthesis by extending Synthetic Separation Logic (SSL), a logical framework for deductive synthesis of heap-manipulating programs from Separation Logic specifications. We implement our approach as a tool called Cypress, and showcase it by automatically synthesizing a number of programs manipulating linked data structures using recursive auxiliary procedures and mutual recursion, many of which were beyond the reach of existing program synthesis tools.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":"4 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2021-06-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"73728754","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
Adaptive restarts for stochastic synthesis 随机合成的自适应重启
Jason R. Koenig, O. Padon, A. Aiken
We consider the problem of program synthesis from input-output examples via stochastic search. We identify a robust feature of stochastic synthesis: The search often progresses through a series of discrete plateaus. We observe that the distribution of synthesis times is often heavy-tailed and analyze how these distributions arise. Based on these insights, we present an algorithm that speeds up synthesis by an order of magnitude over the naive algorithm currently used in practice. Our experimental results are obtained in part using a new program synthesis benchmark for superoptimization distilled from widely used production code.
研究了基于随机搜索的输入输出实例程序合成问题。我们确定了随机合成的一个鲁棒特征:搜索通常通过一系列离散的平台进行。我们观察到合成时间的分布往往是重尾的,并分析了这些分布是如何产生的。基于这些见解,我们提出了一种算法,该算法比目前在实践中使用的朴素算法加快了一个数量级的合成速度。我们的实验结果部分是通过从广泛使用的生产代码中提取的一种新的超优化程序综合基准得到的。
{"title":"Adaptive restarts for stochastic synthesis","authors":"Jason R. Koenig, O. Padon, A. Aiken","doi":"10.1145/3453483.3454071","DOIUrl":"https://doi.org/10.1145/3453483.3454071","url":null,"abstract":"We consider the problem of program synthesis from input-output examples via stochastic search. We identify a robust feature of stochastic synthesis: The search often progresses through a series of discrete plateaus. We observe that the distribution of synthesis times is often heavy-tailed and analyze how these distributions arise. Based on these insights, we present an algorithm that speeds up synthesis by an order of magnitude over the naive algorithm currently used in practice. Our experimental results are obtained in part using a new program synthesis benchmark for superoptimization distilled from widely used production code.","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":"12 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2021-06-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"87171308","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}
引用次数: 5
Learning to find naming issues with big code and small supervision 学习用大代码和小监督发现命名问题
Jingxuan He, Cheng-Chun Lee, Veselin Raychev, Martin T. Vechev
We introduce a new approach for finding and fixing naming issues in source code. The method is based on a careful combination of unsupervised and supervised procedures: (i) unsupervised mining of patterns from Big Code that express common naming idioms. Program fragments violating such idioms indicates likely naming issues, and (ii) supervised learning of a classifier on a small labeled dataset which filters potential false positives from the violations. We implemented our method in a system called Namer and evaluated it on a large number of Python and Java programs. We demonstrate that Namer is effective in finding naming mistakes in real world repositories with high precision (~70%). Perhaps surprisingly, we also show that existing deep learning methods are not practically effective and achieve low precision in finding naming issues (up to ~16%).
我们引入了一种新的方法来查找和修复源代码中的命名问题。该方法基于无监督和有监督过程的精心结合:(i)从表达常用命名习惯的Big Code中无监督地挖掘模式。违反这些习惯用法的程序片段表明可能存在命名问题,并且(ii)在一个小的标记数据集上对分类器进行监督学习,该数据集可以从违规中过滤潜在的误报。我们在一个名为Namer的系统中实现了我们的方法,并在大量Python和Java程序中对其进行了评估。我们证明了Namer能够有效地在现实世界的存储库中以很高的精度(~70%)发现命名错误。也许令人惊讶的是,我们还表明,现有的深度学习方法实际上并不有效,并且在发现命名问题方面达到了低精度(高达16%)。
{"title":"Learning to find naming issues with big code and small supervision","authors":"Jingxuan He, Cheng-Chun Lee, Veselin Raychev, Martin T. Vechev","doi":"10.1145/3453483.3454045","DOIUrl":"https://doi.org/10.1145/3453483.3454045","url":null,"abstract":"We introduce a new approach for finding and fixing naming issues in source code. The method is based on a careful combination of unsupervised and supervised procedures: (i) unsupervised mining of patterns from Big Code that express common naming idioms. Program fragments violating such idioms indicates likely naming issues, and (ii) supervised learning of a classifier on a small labeled dataset which filters potential false positives from the violations. We implemented our method in a system called Namer and evaluated it on a large number of Python and Java programs. We demonstrate that Namer is effective in finding naming mistakes in real world repositories with high precision (~70%). Perhaps surprisingly, we also show that existing deep learning methods are not practically effective and achieve low precision in finding naming issues (up to ~16%).","PeriodicalId":20557,"journal":{"name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","volume":"64 2-3","pages":""},"PeriodicalIF":0.0,"publicationDate":"2021-06-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"72590097","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}
引用次数: 7
期刊
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