首页 > 最新文献

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

英文 中文
DIY assistant: a multi-modal end-user programmable virtual assistant DIY助手:多模态终端用户可编程虚拟助手
Michael H. Fischer, Giovanni Campagna, Euirim Choi, M. Lam
While Alexa can perform over 100,000 skills, its capability covers only a fraction of what is possible on the web. Individuals need and want to automate a long tail of web-based tasks which often involve visiting different websites and require programming concepts such as function composition, conditional, and iterative evaluation. This paper presents DIYA (Do-It-Yourself Assistant), a new system that empowers users to create personalized web-based virtual assistant skills that require the full generality of composable control constructs, without having to learn a formal programming language. With DIYA, the user demonstrates their task of interest in the browser and issues a few simple voice commands, such as naming the skills and adding conditions on the action. DIYA turns these multi-modal specifications into voice-invocable skills written in the ThingTalk 2.0 programming language we designed for this purpose. DIYA is a prototype that works in the Chrome browser. Our user studies show that 81% of the proposed routines can be expressed using DIYA. DIYA is easy to learn, and 80% of users surveyed find DIYA useful.
虽然Alexa可以执行超过10万种技能,但它的能力只涵盖了网络上可能的一小部分。个人需要并想要自动化一长串基于web的任务,这些任务通常涉及访问不同的网站,并需要诸如功能组合、条件和迭代评估等编程概念。本文介绍了DIYA (Do-It-Yourself Assistant),这是一个新系统,它使用户能够创建个性化的基于web的虚拟助手技能,这些技能需要可组合控制结构的全部通用性,而无需学习正式的编程语言。使用DIYA,用户在浏览器中演示他们感兴趣的任务,并发出一些简单的语音命令,例如命名技能和添加操作条件。DIYA将这些多模态规范转换成用我们为此目的设计的ThingTalk 2.0编程语言编写的语音调用技能。DIYA是一个在Chrome浏览器中工作的原型。我们的用户研究表明,81%的建议例程可以使用DIYA表示。DIYA很容易学习,80%的用户认为DIYA很有用。
{"title":"DIY assistant: a multi-modal end-user programmable virtual assistant","authors":"Michael H. Fischer, Giovanni Campagna, Euirim Choi, M. Lam","doi":"10.1145/3453483.3454046","DOIUrl":"https://doi.org/10.1145/3453483.3454046","url":null,"abstract":"While Alexa can perform over 100,000 skills, its capability covers only a fraction of what is possible on the web. Individuals need and want to automate a long tail of web-based tasks which often involve visiting different websites and require programming concepts such as function composition, conditional, and iterative evaluation. This paper presents DIYA (Do-It-Yourself Assistant), a new system that empowers users to create personalized web-based virtual assistant skills that require the full generality of composable control constructs, without having to learn a formal programming language. With DIYA, the user demonstrates their task of interest in the browser and issues a few simple voice commands, such as naming the skills and adding conditions on the action. DIYA turns these multi-modal specifications into voice-invocable skills written in the ThingTalk 2.0 programming language we designed for this purpose. DIYA is a prototype that works in the Chrome browser. Our user studies show that 81% of the proposed routines can be expressed using DIYA. DIYA is easy to learn, and 80% of users surveyed find DIYA useful.","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":"74028121","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}
引用次数: 16
Concurrent deferred reference counting with constant-time overhead 具有恒定时间开销的并发延迟引用计数
Daniel Anderson, G. Blelloch, Yuanhao Wei
We present a safe automatic memory reclamation approach for concurrent programs, and show that it is both theoretically and practically efficient. Our approach combines ideas from referencing counting and hazard pointers in a novel way to implement concurrent reference counting with wait-free, constant-time overhead. It overcomes the limitations of previous approaches by significantly reducing modifications to, and hence contention on, the reference counts. Furthermore, it is safer and easier to use than manual approaches. Our technique involves using a novel generalization of hazard pointers to defer reference-count decrements until no other process can be incrementing them, and to defer or elide reference-count increments for short-lived references. We have implemented the approach as a C++ library and compared it experimentally to several methods including existing atomic reference-counting libraries and state-of-the art manual techniques. Our results indicate that our technique is faster than existing reference-counting implementations, and competitive with manual memory reclamation techniques. More importantly, it is significantly safer than manual techniques since objects are reclaimed automatically.
提出了一种安全的并发程序自动内存回收方法,并证明了该方法在理论上和实践上都是有效的。我们的方法结合了引用计数和危险指针的思想,以一种新颖的方式实现无等待、恒定时间开销的并发引用计数。它通过显著减少对引用计数的修改和争用,克服了以前方法的局限性。此外,它比手动方法更安全,更容易使用。我们的技术包括使用危险指针的一种新的泛化方法来延迟引用计数的递减,直到没有其他进程可以对它们进行递增,并延迟或省略寿命较短的引用的引用计数增量。我们已经将该方法实现为c++库,并将其与几种方法进行了实验比较,包括现有的原子引用计数库和最先进的手工技术。我们的结果表明,我们的技术比现有的引用计数实现更快,并与手动内存回收技术竞争。更重要的是,它比手动技术安全得多,因为对象是自动回收的。
{"title":"Concurrent deferred reference counting with constant-time overhead","authors":"Daniel Anderson, G. Blelloch, Yuanhao Wei","doi":"10.1145/3453483.3454060","DOIUrl":"https://doi.org/10.1145/3453483.3454060","url":null,"abstract":"We present a safe automatic memory reclamation approach for concurrent programs, and show that it is both theoretically and practically efficient. Our approach combines ideas from referencing counting and hazard pointers in a novel way to implement concurrent reference counting with wait-free, constant-time overhead. It overcomes the limitations of previous approaches by significantly reducing modifications to, and hence contention on, the reference counts. Furthermore, it is safer and easier to use than manual approaches. Our technique involves using a novel generalization of hazard pointers to defer reference-count decrements until no other process can be incrementing them, and to defer or elide reference-count increments for short-lived references. We have implemented the approach as a C++ library and compared it experimentally to several methods including existing atomic reference-counting libraries and state-of-the art manual techniques. Our results indicate that our technique is faster than existing reference-counting implementations, and competitive with manual memory reclamation techniques. More importantly, it is significantly safer than manual techniques since objects are reclaimed automatically.","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":"79010550","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
Test-case reduction and deduplication almost for free with transformation-based compiler testing 使用基于转换的编译器测试,测试用例减少和重复数据删除几乎是免费的
A. Donaldson, Paul Thomson, Vasyl Teliman, Stefano Milizia, André Perez Maselco, Antoni Karpiński
Recent transformation-based approaches to compiler testing look for mismatches between the results of pairs of equivalent programs, where one program is derived from the other by randomly applying semantics-preserving transformations. We present a formulation of transformation-based compiler testing that provides effective test-case reduction almost for free: if transformations are designed to be as small and independent as possible, standard delta debugging can be used to shrink a bug-inducing transformation sequence to a smaller subsequence that still triggers the bug. The bug can then be reported as a delta between an original and minimally-transformed program. Minimized transformation sequences can also be used to heuristically deduplicate a set of bug-inducing tests, recommending manual investigation of those that involve disparate types of transformations and thus may have different root causes. We demonstrate the effectiveness of our approach via a new tool, spirv-fuzz, the first compiler-testing tool for the SPIR-V intermediate representation that underpins the Vulkan GPU programming model.
最近基于转换的编译器测试方法寻找等效程序对的结果之间的不匹配,其中一个程序通过随机应用保持语义的转换派生自另一个程序。我们提出了一种基于转换的编译器测试的公式,它几乎免费地提供了有效的测试用例缩减:如果转换设计得尽可能小且独立,则可以使用标准增量调试将引起错误的转换序列缩减为仍然触发错误的较小子序列。然后,可以将错误报告为原始程序和最小转换程序之间的增量。最小化转换序列还可以用于启发式地去重复一组引起错误的测试,建议手工调查那些涉及不同类型转换的测试,因此可能有不同的根本原因。我们通过一个新工具spirv-fuzz证明了我们方法的有效性,这是支持Vulkan GPU编程模型的spirv- v中间表示的第一个编译器测试工具。
{"title":"Test-case reduction and deduplication almost for free with transformation-based compiler testing","authors":"A. Donaldson, Paul Thomson, Vasyl Teliman, Stefano Milizia, André Perez Maselco, Antoni Karpiński","doi":"10.1145/3453483.3454092","DOIUrl":"https://doi.org/10.1145/3453483.3454092","url":null,"abstract":"Recent transformation-based approaches to compiler testing look for mismatches between the results of pairs of equivalent programs, where one program is derived from the other by randomly applying semantics-preserving transformations. We present a formulation of transformation-based compiler testing that provides effective test-case reduction almost for free: if transformations are designed to be as small and independent as possible, standard delta debugging can be used to shrink a bug-inducing transformation sequence to a smaller subsequence that still triggers the bug. The bug can then be reported as a delta between an original and minimally-transformed program. Minimized transformation sequences can also be used to heuristically deduplicate a set of bug-inducing tests, recommending manual investigation of those that involve disparate types of transformations and thus may have different root causes. We demonstrate the effectiveness of our approach via a new tool, spirv-fuzz, the first compiler-testing tool for the SPIR-V intermediate representation that underpins the Vulkan GPU programming model.","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":"86666999","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}
引用次数: 17
Reticle: a virtual machine for programming modern FPGAs 用于编程现代fpga的虚拟机
Luis Vega, Joseph McMahan, Adrian Sampson, D. Grossman, L. Ceze
Modern field-programmable gate arrays (FPGAs) have recently powered high-profile efficiency gains in systems from datacenters to embedded devices by offering ensembles of heterogeneous, reconfigurable hardware units. Programming stacks for FPGAs, however, are stuck in the past—they are based on traditional hardware languages, which were appropriate when FPGAs were simple, homogeneous fabrics of basic programmable primitives. We describe Reticle, a new low-level abstraction for FPGA programming that, unlike existing languages, explicitly represents the special-purpose units available on a particular FPGA device. Reticle has two levels: a portable intermediate language and a target-specific assembly language. We show how to use a standard instruction selection approach to lower intermediate programs to assembly programs, which can be both faster and more effective than the complex metaheuristics that existing FPGA toolchains use. We use Reticle to implement linear algebra operators and coroutines and find that Reticle compilation runs up to 100 times faster than current approaches while producing comparable or better run-time and utilization.
现代现场可编程门阵列(fpga)最近通过提供异构、可重构硬件单元的集成,为从数据中心到嵌入式设备的系统提供了引人注目的效率提升。然而,fpga的编程堆栈仍然停留在过去——它们基于传统的硬件语言,当fpga是简单的、基本可编程原语的同构结构时,这是合适的。我们描述了Reticle,一种新的FPGA编程的低级抽象,与现有的语言不同,它显式地表示特定FPGA设备上可用的专用单元。Reticle有两个级别:可移植的中间语言和特定于目标的汇编语言。我们展示了如何使用标准指令选择方法将较低的中间程序转换为汇编程序,这比现有FPGA工具链使用的复杂元启发式更快,更有效。我们使用Reticle来实现线性代数运算符和协程,并发现Reticle的编译运行速度比目前的方法快100倍,同时产生相当或更好的运行时间和利用率。
{"title":"Reticle: a virtual machine for programming modern FPGAs","authors":"Luis Vega, Joseph McMahan, Adrian Sampson, D. Grossman, L. Ceze","doi":"10.1145/3453483.3454075","DOIUrl":"https://doi.org/10.1145/3453483.3454075","url":null,"abstract":"Modern field-programmable gate arrays (FPGAs) have recently powered high-profile efficiency gains in systems from datacenters to embedded devices by offering ensembles of heterogeneous, reconfigurable hardware units. Programming stacks for FPGAs, however, are stuck in the past—they are based on traditional hardware languages, which were appropriate when FPGAs were simple, homogeneous fabrics of basic programmable primitives. We describe Reticle, a new low-level abstraction for FPGA programming that, unlike existing languages, explicitly represents the special-purpose units available on a particular FPGA device. Reticle has two levels: a portable intermediate language and a target-specific assembly language. We show how to use a standard instruction selection approach to lower intermediate programs to assembly programs, which can be both faster and more effective than the complex metaheuristics that existing FPGA toolchains use. We use Reticle to implement linear algebra operators and coroutines and find that Reticle compilation runs up to 100 times faster than current approaches while producing comparable or better run-time and utilization.","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":"82733825","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
Alive2: bounded translation validation for LLVM Alive2: LLVM的有限翻译验证
Nuno P. Lopes, Juneyoung Lee, C. Hur, Zhengyang Liu, J. Regehr
We designed, implemented, and deployed Alive2: a bounded translation validation tool for the LLVM compiler’s intermediate representation (IR). It limits resource consumption by, for example, unrolling loops up to some bound, which means there are circumstances in which it misses bugs. Alive2 is designed to avoid false alarms, is fully automatic through the use of an SMT solver, and requires no changes to LLVM. By running Alive2 over LLVM’s unit test suite, we discovered and reported 47 new bugs, 28 of which have been fixed already. Moreover, our work has led to eight patches to the LLVM Language Reference—the definitive description of the semantics of its IR—and we have participated in numerous discussions with the goal of clarifying ambiguities and fixing errors in these semantics. Alive2 is open source and we also made it available on the web, where it has active users from the LLVM community.
我们设计、实现并部署了Alive2:一个用于LLVM编译器中间表示(IR)的有限翻译验证工具。它限制了资源消耗,例如,在一定范围内展开循环,这意味着在某些情况下它会错过错误。Alive2旨在避免误报,通过使用SMT求解器实现全自动,并且不需要更改LLVM。通过在LLVM的单元测试套件上运行Alive2,我们发现并报告了47个新bug,其中28个已经修复。此外,我们的工作已经为LLVM语言参考(对其ir语义的明确描述)带来了8个补丁,并且我们参与了许多讨论,目的是澄清这些语义中的歧义和修复错误。Alive2是开源的,我们也让它在网络上可用,在那里它有来自LLVM社区的活跃用户。
{"title":"Alive2: bounded translation validation for LLVM","authors":"Nuno P. Lopes, Juneyoung Lee, C. Hur, Zhengyang Liu, J. Regehr","doi":"10.1145/3453483.3454030","DOIUrl":"https://doi.org/10.1145/3453483.3454030","url":null,"abstract":"We designed, implemented, and deployed Alive2: a bounded translation validation tool for the LLVM compiler’s intermediate representation (IR). It limits resource consumption by, for example, unrolling loops up to some bound, which means there are circumstances in which it misses bugs. Alive2 is designed to avoid false alarms, is fully automatic through the use of an SMT solver, and requires no changes to LLVM. By running Alive2 over LLVM’s unit test suite, we discovered and reported 47 new bugs, 28 of which have been fixed already. Moreover, our work has led to eight patches to the LLVM Language Reference—the definitive description of the semantics of its IR—and we have participated in numerous discussions with the goal of clarifying ambiguities and fixing errors in these semantics. Alive2 is open source and we also made it available on the web, where it has active users from the LLVM community.","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":"79659156","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}
引用次数: 34
Path-sensitive sparse analysis without path conditions 无路径条件的路径敏感稀疏分析
Qingkai Shi, Peisen Yao, Rongxin Wu, Charles Zhang
Sparse program analysis is fast as it propagates data flow facts via data dependence, skipping unnecessary control flows. However, when path-sensitively checking millions of lines of code, it is still prohibitively expensive because a huge number of path conditions have to be computed and solved via an SMT solver. This paper presents Fusion, a fused approach to inter-procedurally path-sensitive sparse analysis. In Fusion, the SMT solver does not work as a standalone tool on path conditions but directly on the program together with the sparse analysis. Such a fused design allows us to determine the path feasibility without explicitly computing path conditions, not only saving the cost of computing path conditions but also providing an opportunity to enhance the SMT solving algorithm. To the best of our knowledge, Fusion, for the first time, enables whole program bug detection on millions of lines of code in a common personal computer, with the precision of inter-procedural path-sensitivity. Compared to two state-of-the-art tools, Fusion is 10× faster but consumes only 10% of memory on average. Fusion has detected over a hundred bugs in mature open-source software, some of which have even been assigned CVE identifiers due to their security impact.
稀疏程序分析是快速的,因为它通过数据依赖传播数据流事实,跳过不必要的控制流。然而,当路径敏感地检查数百万行代码时,它仍然非常昂贵,因为必须通过SMT求解器计算和解决大量的路径条件。本文提出了一种程序间路径敏感稀疏分析的融合方法Fusion。在Fusion中,SMT求解器不是作为一个独立的工具在路径条件下工作,而是直接与稀疏分析一起在程序上工作。这种融合设计使我们无需显式计算路径条件就可以确定路径可行性,不仅节省了计算路径条件的成本,而且为改进SMT求解算法提供了机会。据我们所知,Fusion首次能够在普通个人计算机上对数百万行代码进行整个程序错误检测,具有程序间路径敏感性的精度。与两种最先进的工具相比,Fusion的速度快10倍,但平均只消耗10%的内存。Fusion已经在成熟的开源软件中发现了超过100个错误,其中一些由于其安全影响甚至被分配了CVE标识符。
{"title":"Path-sensitive sparse analysis without path conditions","authors":"Qingkai Shi, Peisen Yao, Rongxin Wu, Charles Zhang","doi":"10.1145/3453483.3454086","DOIUrl":"https://doi.org/10.1145/3453483.3454086","url":null,"abstract":"Sparse program analysis is fast as it propagates data flow facts via data dependence, skipping unnecessary control flows. However, when path-sensitively checking millions of lines of code, it is still prohibitively expensive because a huge number of path conditions have to be computed and solved via an SMT solver. This paper presents Fusion, a fused approach to inter-procedurally path-sensitive sparse analysis. In Fusion, the SMT solver does not work as a standalone tool on path conditions but directly on the program together with the sparse analysis. Such a fused design allows us to determine the path feasibility without explicitly computing path conditions, not only saving the cost of computing path conditions but also providing an opportunity to enhance the SMT solving algorithm. To the best of our knowledge, Fusion, for the first time, enables whole program bug detection on millions of lines of code in a common personal computer, with the precision of inter-procedural path-sensitivity. Compared to two state-of-the-art tools, Fusion is 10× faster but consumes only 10% of memory on average. Fusion has detected over a hundred bugs in mature open-source software, some of which have even been assigned CVE identifiers due to their security impact.","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":"87115676","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
Quantum abstract interpretation 量子抽象解释
Nengkun Yu, J. Palsberg
In quantum computing, the basic unit of information is a qubit. Simulation of a general quantum program takes exponential time in the number of qubits, which makes simulation infeasible beyond 50 qubits on current supercomputers. So, for the understanding of larger programs, we turn to static techniques. In this paper, we present an abstract interpretation of quantum programs and we use it to automatically verify assertions in polynomial time. Our key insight is to let an abstract state be a tuple of projections. For such domains, we present abstraction and concretization functions that form a Galois connection and we use them to define abstract operations. Our experiments on a laptop have verified assertions about the Bernstein-Vazirani, GHZ, and Grover benchmarks with 300 qubits.
在量子计算中,信息的基本单位是量子位。一般量子程序的模拟需要量子位数的指数级时间,这使得模拟在当前的超级计算机上不可能超过50个量子位。因此,为了理解更大的程序,我们转向静态技术。本文给出了量子程序的抽象解释,并利用它在多项式时间内自动验证断言。我们的关键见解是让抽象状态成为一个投影元组。对于这样的域,我们提出了抽象和具体化函数,形成伽罗瓦连接,并使用它们来定义抽象操作。我们在笔记本电脑上的实验已经验证了伯恩斯坦-瓦齐拉尼、千兆赫和格罗弗300量子位基准的断言。
{"title":"Quantum abstract interpretation","authors":"Nengkun Yu, J. Palsberg","doi":"10.1145/3453483.3454061","DOIUrl":"https://doi.org/10.1145/3453483.3454061","url":null,"abstract":"In quantum computing, the basic unit of information is a qubit. Simulation of a general quantum program takes exponential time in the number of qubits, which makes simulation infeasible beyond 50 qubits on current supercomputers. So, for the understanding of larger programs, we turn to static techniques. In this paper, we present an abstract interpretation of quantum programs and we use it to automatically verify assertions in polynomial time. Our key insight is to let an abstract state be a tuple of projections. For such domains, we present abstraction and concretization functions that form a Galois connection and we use them to define abstract operations. Our experiments on a laptop have verified assertions about the Bernstein-Vazirani, GHZ, and Grover benchmarks with 300 qubits.","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":"83488243","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
Modular data-race-freedom guarantees in the promising semantics 模块化的数据竞争自由保证了有前途的语义
Minki Cho, Sung-Hwan Lee, C. Hur, O. Lahav
Local data-race-freedom guarantees, ensuring strong semantics for locations accessed by non-racy instructions, provide a fruitful methodology for modular reasoning in relaxed memory concurrency. We observe that standard compiler optimizations are in inherent conflict with such guarantees in general fully-relaxed memory models. Nevertheless, for a certain strengthening of the promising model by Lee et al. that only excludes relaxed RMW-store reorderings, we establish multiple useful local data-racefreedom guarantees that enhance the programmability aspect of the model.We also demonstrate that the performance price of forbidding these reorderings is insignificant. To the best of our knowledge, these results are the first to identify a model that includes the standard concurrency constructs, supports the efficient mapping of relaxed reads and writes to plain hardware loads and stores, and yet validates several local data-race-freedom guarantees. To gain confidence, our results are fully mechanized in Coq.
本地数据竞争自由保证,确保非竞争指令访问的位置具有强语义,为轻松内存并发性中的模块化推理提供了一种富有成效的方法。我们观察到,在一般的完全放松内存模型中,标准编译器优化与这种保证存在内在冲突。然而,为了在一定程度上加强Lee等人的有希望的模型(只排除宽松的RMW-store重排序),我们建立了多个有用的局部数据竞争自由保证,增强了模型的可编程性方面。我们还证明了禁止这些重排序的性能代价是微不足道的。据我们所知,这些结果首次确定了一个模型,该模型包括标准的并发构造,支持将轻松的读写有效地映射到普通硬件负载和存储,并且验证了几个本地数据竞争自由保证。为了获得信心,我们的结果在Coq中完全机械化。
{"title":"Modular data-race-freedom guarantees in the promising semantics","authors":"Minki Cho, Sung-Hwan Lee, C. Hur, O. Lahav","doi":"10.1145/3453483.3454082","DOIUrl":"https://doi.org/10.1145/3453483.3454082","url":null,"abstract":"Local data-race-freedom guarantees, ensuring strong semantics for locations accessed by non-racy instructions, provide a fruitful methodology for modular reasoning in relaxed memory concurrency. We observe that standard compiler optimizations are in inherent conflict with such guarantees in general fully-relaxed memory models. Nevertheless, for a certain strengthening of the promising model by Lee et al. that only excludes relaxed RMW-store reorderings, we establish multiple useful local data-racefreedom guarantees that enhance the programmability aspect of the model.We also demonstrate that the performance price of forbidding these reorderings is insignificant. To the best of our knowledge, these results are the first to identify a model that includes the standard concurrency constructs, supports the efficient mapping of relaxed reads and writes to plain hardware loads and stores, and yet validates several local data-race-freedom guarantees. To gain confidence, our results are fully mechanized in Coq.","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":"76697605","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
Logical bytecode reduction 逻辑字节码缩减
Christian Gram Kalhauge, J. Palsberg
Reducing a failure-inducing input to a smaller one is challenging for input with internal dependencies because most sub-inputs are invalid. Kalhauge and Palsberg made progress on this problem by mapping the task to a reduction problem for dependency graphs that avoids invalid inputs entirely. Their tool J-Reduce efficiently reduces Java bytecode to 24 percent of its original size, which made it the most effective tool until now. However, the output from their tool is often too large to be helpful in a bug report. In this paper, we show that more fine-grained modeling of dependencies leads to much more reduction. Specifically, we use propositional logic for specifying dependencies and we show how this works for Java bytecode. Once we have a propositional formula that specifies all valid sub-inputs, we run an algorithm that finds a small, valid, failure-inducing input. Our algorithm interleaves runs of the buggy program and calls to a procedure that finds a minimal satisfying assignment. Our experiments show that we can reduce Java bytecode to 4.6 percent of its original size, which is 5.3 times better than the 24.3 percent achieved by J-Reduce. The much smaller output is more suitable for bug reports.
对于具有内部依赖性的输入来说,将导致故障的输入减少到较小的输入是一项挑战,因为大多数子输入都是无效的。Kalhauge和Palsberg在这个问题上取得了进展,他们将任务映射为依赖图的约简问题,从而完全避免了无效输入。他们的工具J-Reduce有效地将Java字节码减少到原始大小的24%,这使其成为迄今为止最有效的工具。然而,他们的工具的输出通常太大,对bug报告没有帮助。在本文中,我们展示了对依赖关系进行更细粒度的建模会导致更多的减少。具体地说,我们使用命题逻辑来指定依赖关系,并展示了这是如何在Java字节码中工作的。一旦我们有了一个指定所有有效子输入的命题公式,我们就运行一个算法来找到一个小的、有效的、诱导失败的输入。我们的算法交错运行有缺陷的程序,并调用一个寻找最小满意赋值的过程。我们的实验表明,我们可以将Java字节码减少到原始大小的4.6%,这比J-Reduce实现的24.3%好5.3倍。更小的输出更适合bug报告。
{"title":"Logical bytecode reduction","authors":"Christian Gram Kalhauge, J. Palsberg","doi":"10.1145/3453483.3454091","DOIUrl":"https://doi.org/10.1145/3453483.3454091","url":null,"abstract":"Reducing a failure-inducing input to a smaller one is challenging for input with internal dependencies because most sub-inputs are invalid. Kalhauge and Palsberg made progress on this problem by mapping the task to a reduction problem for dependency graphs that avoids invalid inputs entirely. Their tool J-Reduce efficiently reduces Java bytecode to 24 percent of its original size, which made it the most effective tool until now. However, the output from their tool is often too large to be helpful in a bug report. In this paper, we show that more fine-grained modeling of dependencies leads to much more reduction. Specifically, we use propositional logic for specifying dependencies and we show how this works for Java bytecode. Once we have a propositional formula that specifies all valid sub-inputs, we run an algorithm that finds a small, valid, failure-inducing input. Our algorithm interleaves runs of the buggy program and calls to a procedure that finds a minimal satisfying assignment. Our experiments show that we can reduce Java bytecode to 4.6 percent of its original size, which is 5.3 times better than the 24.3 percent achieved by J-Reduce. The much smaller output is more suitable for bug reports.","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":"89772456","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
Trace-based control-flow analysis 基于跟踪的控制流分析
Benoît Montagu, T. Jensen
We define a small-step semantics for the untyped λ-calculus, that traces the β-reductions that occur during evaluation. By abstracting the computation traces, we reconstruct k-CFA using abstract interpretation, and justify constraint-based k-CFA in a semantic way. The abstract interpretation of the trace semantics also paves the way for introducing widening operators in CFA that go beyond existing analyses, that are all based on exploring a finite state space. We define ∇CFA, a widening-based analysis that limits the cycles in call stacks, and can achieve better precision than k-CFA at a similar cost.
我们为无类型λ演算定义了一个小步语义,它跟踪了在计算过程中发生的β-约简。通过对计算轨迹进行抽象,利用抽象解释对k-CFA进行重构,并对基于约束的k-CFA进行语义化论证。跟踪语义的抽象解释还为在CFA中引入扩展运算符铺平了道路,这些运算符超越了现有的分析,这些分析都基于对有限状态空间的探索。我们定义了∇CFA,这是一种基于扩展的分析,它限制了调用堆栈中的周期,并且可以在相似的成本下获得比k-CFA更好的精度。
{"title":"Trace-based control-flow analysis","authors":"Benoît Montagu, T. Jensen","doi":"10.1145/3453483.3454057","DOIUrl":"https://doi.org/10.1145/3453483.3454057","url":null,"abstract":"We define a small-step semantics for the untyped λ-calculus, that traces the β-reductions that occur during evaluation. By abstracting the computation traces, we reconstruct k-CFA using abstract interpretation, and justify constraint-based k-CFA in a semantic way. The abstract interpretation of the trace semantics also paves the way for introducing widening operators in CFA that go beyond existing analyses, that are all based on exploring a finite state space. We define ∇CFA, a widening-based analysis that limits the cycles in call stacks, and can achieve better precision than k-CFA at a similar cost.","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":"87754920","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
期刊
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