首页 > 最新文献

Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation最新文献

英文 中文
Asynchronous programming, analysis and testing with state machines 异步编程,分析和测试状态机
Pantazis Deligiannis, A. Donaldson, J. Ketema, A. Lal, Paul Thomson
Programming efficient asynchronous systems is challenging because it can often be hard to express the design declaratively, or to defend against data races and interleaving-dependent assertion violations. Previous work has only addressed these challenges in isolation, by either designing a new declarative language, a new data race detection tool or a new testing technique. We present P#, a language for high-reliability asynchronous programming co-designed with a static data race analysis and systematic concurrency testing infrastructure. We describe our experience using P# to write several distributed protocols and port an industrial-scale system internal to Microsoft, showing that the combined techniques, by leveraging the design of P#, are effective in finding bugs.
编程高效的异步系统是一项挑战,因为通常很难以声明的方式表达设计,或者很难防止数据竞争和依赖于交错的断言违规。以前的工作只是通过设计一种新的声明性语言、一种新的数据竞争检测工具或一种新的测试技术来孤立地解决这些挑战。我们介绍了p#,一种用于高可靠性异步编程的语言,它与静态数据竞争分析和系统并发测试基础设施共同设计。我们描述了我们使用p#编写几个分布式协议并将一个工业规模的系统内部移植到微软的经验,表明通过利用p#的设计,这些组合技术在查找bug方面是有效的。
{"title":"Asynchronous programming, analysis and testing with state machines","authors":"Pantazis Deligiannis, A. Donaldson, J. Ketema, A. Lal, Paul Thomson","doi":"10.1145/2737924.2737996","DOIUrl":"https://doi.org/10.1145/2737924.2737996","url":null,"abstract":"Programming efficient asynchronous systems is challenging because it can often be hard to express the design declaratively, or to defend against data races and interleaving-dependent assertion violations. Previous work has only addressed these challenges in isolation, by either designing a new declarative language, a new data race detection tool or a new testing technique. We present P#, a language for high-reliability asynchronous programming co-designed with a static data race analysis and systematic concurrency testing infrastructure. We describe our experience using P# to write several distributed protocols and port an industrial-scale system internal to Microsoft, showing that the combined techniques, by leveraging the design of P#, are effective in finding bugs.","PeriodicalId":104101,"journal":{"name":"Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-06-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128580629","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}
引用次数: 42
A simpler, safer programming and execution model for intermittent systems 一个更简单、更安全的间歇系统编程和执行模型
Brandon Lucia, Benjamin Ransford
Energy harvesting enables novel devices and applications without batteries, but intermittent operation under energy harvesting poses new challenges to memory consistency that threaten to leave applications in failed states not reachable in continuous execution. This paper presents analytical models that aid in reasoning about intermittence. Using these, we develop DINO (Death Is Not an Option), a programming and execution model that simplifies programming for intermittent systems and ensures volatile and nonvolatile data consistency despite near-constant interruptions. DINO is the first system to address these consistency problems in the context of intermittent execution. We evaluate DINO on three energy-harvesting hardware platforms running different applications. The applications fail and exhibit error without DINO, but run correctly with DINO’s modest 1.8–2.7× run-time overhead. DINO also dramatically simplifies programming, reducing the set of possible failure- related control transfers by 5–9×.
能量收集可以实现无需电池的新型设备和应用,但能量收集下的间歇性操作对内存一致性提出了新的挑战,可能会使应用程序在连续执行时处于无法访问的失败状态。本文提出了有助于对间歇性进行推理的分析模型。利用这些,我们开发了DINO (Death Is Not an Option),这是一种编程和执行模型,可以简化间歇性系统的编程,并确保在几乎不断中断的情况下,volatile和non - volatile数据的一致性。DINO是第一个在间歇执行环境下解决这些一致性问题的系统。我们在运行不同应用程序的三种能量收集硬件平台上对DINO进行了评估。如果没有DINO,应用程序会失败并显示错误,但在DINO适度的1.8 - 2.7倍运行时开销下,应用程序可以正常运行。DINO还大大简化了编程,减少了5 - 9x可能的故障相关控制传输集。
{"title":"A simpler, safer programming and execution model for intermittent systems","authors":"Brandon Lucia, Benjamin Ransford","doi":"10.1145/2737924.2737978","DOIUrl":"https://doi.org/10.1145/2737924.2737978","url":null,"abstract":"Energy harvesting enables novel devices and applications without batteries, but intermittent operation under energy harvesting poses new challenges to memory consistency that threaten to leave applications in failed states not reachable in continuous execution. This paper presents analytical models that aid in reasoning about intermittence. Using these, we develop DINO (Death Is Not an Option), a programming and execution model that simplifies programming for intermittent systems and ensures volatile and nonvolatile data consistency despite near-constant interruptions. DINO is the first system to address these consistency problems in the context of intermittent execution. We evaluate DINO on three energy-harvesting hardware platforms running different applications. The applications fail and exhibit error without DINO, but run correctly with DINO’s modest 1.8–2.7× run-time overhead. DINO also dramatically simplifies programming, reducing the set of possible failure- related control transfers by 5–9×.","PeriodicalId":104101,"journal":{"name":"Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"110 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-06-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124682753","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}
引用次数: 262
Efficient execution of recursive programs on commodity vector hardware 有效地执行递归程序在商品矢量硬件
Bin Ren, Youngjoon Jo, S. Krishnamoorthy, Kunal Agrawal, Milind Kulkarni
The pursuit of computational efficiency has led to the proliferation of throughput-oriented hardware, from GPUs to increasingly wide vector units on commodity processors and accelerators. This hardware is designed to efficiently execute data-parallel computations in a vectorized manner. However, many algorithms are more naturally expressed as divide-and-conquer, recursive, task-parallel computations. In the absence of data parallelism, it seems that such algorithms are not well suited to throughput-oriented architectures. This paper presents a set of novel code transformations that expose the data parallelism latent in recursive, task-parallel programs. These transformations facilitate straightforward vectorization of task-parallel programs on commodity hardware. We also present scheduling policies that maintain high utilization of vector resources while limiting space usage. Across several task-parallel benchmarks, we demonstrate both efficient vector resource utilization and substantial speedup on chips using Intel’s SSE4.2 vector units, as well as accelerators using Intel’s AVX512 units.
对计算效率的追求导致了面向吞吐量的硬件的激增,从gpu到商用处理器和加速器上日益广泛的矢量单元。该硬件旨在以矢量化的方式有效地执行数据并行计算。然而,许多算法更自然地表达为分治、递归、任务并行计算。在缺乏数据并行性的情况下,这种算法似乎不太适合面向吞吐量的体系结构。本文提出了一组新的代码转换,揭示了递归任务并行程序中潜在的数据并行性。这些转换有助于在商用硬件上对任务并行程序进行直接的向量化。我们还提出了在限制空间使用的同时保持矢量资源高利用率的调度策略。在几个任务并行基准测试中,我们展示了使用英特尔的SSE4.2矢量单元以及使用英特尔AVX512单元的加速器的高效矢量资源利用率和显著加速。
{"title":"Efficient execution of recursive programs on commodity vector hardware","authors":"Bin Ren, Youngjoon Jo, S. Krishnamoorthy, Kunal Agrawal, Milind Kulkarni","doi":"10.1145/2737924.2738004","DOIUrl":"https://doi.org/10.1145/2737924.2738004","url":null,"abstract":"The pursuit of computational efficiency has led to the proliferation of throughput-oriented hardware, from GPUs to increasingly wide vector units on commodity processors and accelerators. This hardware is designed to efficiently execute data-parallel computations in a vectorized manner. However, many algorithms are more naturally expressed as divide-and-conquer, recursive, task-parallel computations. In the absence of data parallelism, it seems that such algorithms are not well suited to throughput-oriented architectures. This paper presents a set of novel code transformations that expose the data parallelism latent in recursive, task-parallel programs. These transformations facilitate straightforward vectorization of task-parallel programs on commodity hardware. We also present scheduling policies that maintain high utilization of vector resources while limiting space usage. Across several task-parallel benchmarks, we demonstrate both efficient vector resource utilization and substantial speedup on chips using Intel’s SSE4.2 vector units, as well as accelerators using Intel’s AVX512 units.","PeriodicalId":104101,"journal":{"name":"Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"48 10 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-06-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115280671","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}
引用次数: 24
Synthesis of ranking functions using extremal counterexamples 利用极值反例综合排序函数
L. Gonnord, D. Monniaux, Gabriel Radanne
We present a complete method for synthesizing lexicographic linear ranking functions (and thus proving termination), supported by inductive invariants, in the case where the transition relation of the program includes disjunctions and existentials (large block encoding of control flow). Previous work would either synthesize a ranking function at every basic block head, not just loop headers, which reduces the scope of programs that may be proved to be terminating, or expand large block transitions including tests into (exponentially many) elementary transitions, prior to computing the ranking function, resulting in a very large global constraint system. In contrast, our algorithm incrementally refines a global linear constraint system according to extremal counterexamples: only constraints that exclude spurious solutions are included. Experiments with our tool Termite show marked performance and scalability improvements compared to other systems.
我们提出了一个完整的方法来合成字典线性排序函数(从而证明终止),由归纳不变量支持,在这种情况下,程序的转移关系包括断和存在(控制流的大块编码)。以前的工作要么是在每个基本块头(而不仅仅是循环头)合成一个排序函数,这减少了可能被证明是终止的程序的范围,要么是在计算排序函数之前,将包括测试在内的大型块转换扩展为(指数多的)基本转换,从而产生一个非常大的全局约束系统。相比之下,我们的算法根据极端反例逐步改进全局线性约束系统:只包括排除虚假解的约束。与其他系统相比,使用我们的工具Termite进行的实验显示出显著的性能和可伸缩性改进。
{"title":"Synthesis of ranking functions using extremal counterexamples","authors":"L. Gonnord, D. Monniaux, Gabriel Radanne","doi":"10.1145/2737924.2737976","DOIUrl":"https://doi.org/10.1145/2737924.2737976","url":null,"abstract":"We present a complete method for synthesizing lexicographic linear ranking functions (and thus proving termination), supported by inductive invariants, in the case where the transition relation of the program includes disjunctions and existentials (large block encoding of control flow). Previous work would either synthesize a ranking function at every basic block head, not just loop headers, which reduces the scope of programs that may be proved to be terminating, or expand large block transitions including tests into (exponentially many) elementary transitions, prior to computing the ranking function, resulting in a very large global constraint system. In contrast, our algorithm incrementally refines a global linear constraint system according to extremal counterexamples: only constraints that exclude spurious solutions are included. Experiments with our tool Termite show marked performance and scalability improvements compared to other systems.","PeriodicalId":104101,"journal":{"name":"Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"48 3","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-06-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"120920953","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
Relaxing safely: verified on-the-fly garbage collection for x86-TSO 轻松安全:经过验证的实时垃圾收集x86-TSO
Peter Gammie, Antony Lloyd Hosking, Kai Engelhardt
We report on a machine-checked verification of safety for a state-of-the-art, on-the-fly, concurrent, mark-sweep garbage collector that is designed for multi-core architectures with weak memory consistency. The proof explicitly incorporates the relaxed memory semantics of x86 multiprocessors. To our knowledge, this is the first fully machine-checked proof of safety for such a garbage collector. We couch the proof in a framework that system implementers will find appealing, with the fundamental components of the system specified in a simple and intuitive programming language. The abstract model is detailed enough for its correspondence with an assembly language implementation to be straightforward.
我们报告了一种机器检查的安全性验证,它是为具有弱内存一致性的多核架构设计的最先进的、动态的、并发的、标记-清除垃圾收集器。该证明明确地结合了x86多处理器的宽松内存语义。据我们所知,这是此类垃圾收集器的第一个完全由机器检查的安全性证明。我们将证明放在一个系统实现者会觉得有吸引力的框架中,并用简单直观的编程语言指定系统的基本组件。抽象模型足够详细,因此它与汇编语言实现的对应关系是直接的。
{"title":"Relaxing safely: verified on-the-fly garbage collection for x86-TSO","authors":"Peter Gammie, Antony Lloyd Hosking, Kai Engelhardt","doi":"10.1145/2737924.2738006","DOIUrl":"https://doi.org/10.1145/2737924.2738006","url":null,"abstract":"We report on a machine-checked verification of safety for a state-of-the-art, on-the-fly, concurrent, mark-sweep garbage collector that is designed for multi-core architectures with weak memory consistency. The proof explicitly incorporates the relaxed memory semantics of x86 multiprocessors. To our knowledge, this is the first fully machine-checked proof of safety for such a garbage collector. We couch the proof in a framework that system implementers will find appealing, with the fundamental components of the system specified in a simple and intuitive programming language. The abstract model is detailed enough for its correspondence with an assembly language implementation to be straightforward.","PeriodicalId":104101,"journal":{"name":"Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"53 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-06-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123584273","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
Defining the undefinedness of C 定义C的不定义性
Chris Hathhorn, Chucky Ellison, Grigore Roşu
We present a ``negative'' semantics of the C11 language---a semantics that does not just give meaning to correct programs, but also rejects undefined programs. We investigate undefined behavior in C and discuss the techniques and special considerations needed for formally specifying it. We have used these techniques to modify and extend a semantics of C into one that captures undefined behavior. The amount of semantic infrastructure and effort required to achieve this was unexpectedly high, in the end nearly doubling the size of the original semantics. From our semantics, we have automatically extracted an undefinedness checker, which we evaluate against other popular analysis tools, using our own test suite in addition to a third-party test suite. Our checker is capable of detecting examples of all 77 categories of core language undefinedness appearing in the C11 standard, more than any other tool we considered. Based on this evaluation, we argue that our work is the most comprehensive and complete semantic treatment of undefined behavior in C, and thus of the C language itself.
我们提出了C11语言的“否定”语义——这种语义不仅赋予正确的程序意义,而且拒绝未定义的程序。我们研究C中的未定义行为,并讨论正式指定它所需的技术和特殊注意事项。我们已经使用这些技术来修改和扩展C语言的语义,使其能够捕获未定义的行为。实现这一目标所需的语义基础设施和工作量出乎意料地高,最终几乎是原始语义的两倍。从我们的语义中,我们自动提取了一个未定义检查器,我们对其他流行的分析工具进行评估,除了使用第三方测试套件之外,还使用我们自己的测试套件。我们的检查器能够检测C11标准中出现的所有77种核心语言未定义的示例,比我们考虑的任何其他工具都要多。基于这一评价,我们认为我们的工作是对C语言中未定义行为的最全面和完整的语义处理,因此也是对C语言本身的处理。
{"title":"Defining the undefinedness of C","authors":"Chris Hathhorn, Chucky Ellison, Grigore Roşu","doi":"10.1145/2737924.2737979","DOIUrl":"https://doi.org/10.1145/2737924.2737979","url":null,"abstract":"We present a ``negative'' semantics of the C11 language---a semantics that does not just give meaning to correct programs, but also rejects undefined programs. We investigate undefined behavior in C and discuss the techniques and special considerations needed for formally specifying it. We have used these techniques to modify and extend a semantics of C into one that captures undefined behavior. The amount of semantic infrastructure and effort required to achieve this was unexpectedly high, in the end nearly doubling the size of the original semantics. From our semantics, we have automatically extracted an undefinedness checker, which we evaluate against other popular analysis tools, using our own test suite in addition to a third-party test suite. Our checker is capable of detecting examples of all 77 categories of core language undefinedness appearing in the C11 standard, more than any other tool we considered. Based on this evaluation, we argue that our work is the most comprehensive and complete semantic treatment of undefined behavior in C, and thus of the C language itself.","PeriodicalId":104101,"journal":{"name":"Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-06-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128571343","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}
引用次数: 130
Profile-guided meta-programming Profile-guided元编程
W. J. Bowman, Swaha Miller, Vincent St-Amour, R. Dybvig
Contemporary compiler systems such as GCC, .NET, and LLVM incorporate profile-guided optimizations (PGOs) on low-level intermediate code and basic blocks, with impressive results over purely static heuristics. Recent work shows that profile information is also useful for performing source-to-source optimizations via meta-programming. For example, using profiling information to inform decisions about data structures and algorithms can potentially lead to asymptotic improvements in performance. We present a design for profile-guided meta-programming in a general-purpose meta-programming system. Our design is parametric over the particular profiler and meta-programming system. We implement this design in two different meta-programming systems---the syntactic extensions systems of Chez Scheme and Racket---and provide several profile-guided meta-programs as usability case studies.
当代的编译器系统,如GCC、。net和LLVM,在低级的中间代码和基本块上结合了配置文件引导的优化(pgo),与纯静态启发式相比,效果令人印象深刻。最近的工作表明,概要信息对于通过元编程执行源到源的优化也很有用。例如,使用分析信息来为有关数据结构和算法的决策提供信息,可能会导致性能的渐进改进。我们提出了一个通用元编程系统中配置文件引导元编程的设计。我们的设计在特定的分析器和元编程系统上是参数化的。我们在两个不同的元编程系统中实现了这种设计——Chez Scheme和Racket的语法扩展系统——并提供了几个概要文件引导的元程序作为可用性案例研究。
{"title":"Profile-guided meta-programming","authors":"W. J. Bowman, Swaha Miller, Vincent St-Amour, R. Dybvig","doi":"10.1145/2737924.2737990","DOIUrl":"https://doi.org/10.1145/2737924.2737990","url":null,"abstract":"Contemporary compiler systems such as GCC, .NET, and LLVM incorporate profile-guided optimizations (PGOs) on low-level intermediate code and basic blocks, with impressive results over purely static heuristics. Recent work shows that profile information is also useful for performing source-to-source optimizations via meta-programming. For example, using profiling information to inform decisions about data structures and algorithms can potentially lead to asymptotic improvements in performance. We present a design for profile-guided meta-programming in a general-purpose meta-programming system. Our design is parametric over the particular profiler and meta-programming system. We implement this design in two different meta-programming systems---the syntactic extensions systems of Chez Scheme and Racket---and provide several profile-guided meta-programs as usability case studies.","PeriodicalId":104101,"journal":{"name":"Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"24 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-06-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126268848","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}
引用次数: 8
Loop and data transformations for sparse matrix code 稀疏矩阵代码的循环和数据转换
Anand Venkat, Mary W. Hall, M. Strout
This paper introduces three new compiler transformations for representing and transforming sparse matrix computations and their data representations. In cooperation with run-time inspection, our compiler derives transformed matrix representations and associated transformed code to implement a variety of representations targeting different architecture platforms. This systematic approach to combining code and data transformations on sparse computations, which extends a polyhedral transformation and code generation framework, permits the compiler to compose these transformations with other transformations to generate code that is on average within 5% and often exceeds manually-tuned, high-performance sparse matrix libraries CUSP and OSKI. Additionally, the compiler-generated inspector codes are on average 1.5 faster than OSKI and perform comparably to CUSP, respectively.
本文介绍了用于表示和转换稀疏矩阵计算及其数据表示的三种新的编译器变换。在运行时检查的配合下,我们的编译器派生转换后的矩阵表示和相关的转换后的代码,以实现针对不同体系结构平台的各种表示。这种将代码和数据转换结合在稀疏计算上的系统方法,扩展了多面体转换和代码生成框架,允许编译器将这些转换与其他转换组合在一起,以生成平均在5%以内的代码,并且通常超过手动调优的高性能稀疏矩阵库CUSP和OSKI。此外,编译器生成的检查器代码比OSKI平均快1.5,执行速度与CUSP相当。
{"title":"Loop and data transformations for sparse matrix code","authors":"Anand Venkat, Mary W. Hall, M. Strout","doi":"10.1145/2737924.2738003","DOIUrl":"https://doi.org/10.1145/2737924.2738003","url":null,"abstract":"This paper introduces three new compiler transformations for representing and transforming sparse matrix computations and their data representations. In cooperation with run-time inspection, our compiler derives transformed matrix representations and associated transformed code to implement a variety of representations targeting different architecture platforms. This systematic approach to combining code and data transformations on sparse computations, which extends a polyhedral transformation and code generation framework, permits the compiler to compose these transformations with other transformations to generate code that is on average within 5% and often exceeds manually-tuned, high-performance sparse matrix libraries CUSP and OSKI. Additionally, the compiler-generated inspector codes are on average 1.5 faster than OSKI and perform comparably to CUSP, respectively.","PeriodicalId":104101,"journal":{"name":"Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"os-37 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-06-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127776530","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}
引用次数: 95
Automatic induction proofs of data-structures in imperative programs 命令式程序中数据结构的自动归纳证明
D. Chu, J. Jaffar, Minh-Thai Trinh
We consider the problem of automated reasoning about dynamically manipulated data structures. Essential properties are encoded as predicates whose definitions are formalized via user-defined recursive rules. Traditionally, proving relationships between such properties is limited to the unfold-and-match (U+M) paradigm which employs systematic transformation steps of folding/unfolding the rules. A proof, using U+M, succeeds when we find a sequence of transformations that produces a final formula which is obviously provable by simply matching terms. Our contribution here is the addition of the fundamental principle of induction to this automated process. We first show that some proof obligations that are dynamically generated in the process can be used as induction hypotheses in the future, and then we show how to use these hypotheses in an induction step which generates a new proof obligation aside from those obtained by using the fold/unfold operations. While the adding of induction is an obvious need in general, no automated method has managed to include this in a systematic and general way. The main reason for this is the problem of avoiding circular reasoning. We overcome this with a novel checking condition. In summary, our contribution is a proof method which – beyond U+M – performs automatic formula re-writing by treating previously encountered obligations in each proof path as possible induction hypotheses. In the practical evaluation part of this paper, we show how the commonly used technique of using unproven lemmas can be avoided, using realistic benchmarks. This not only removes the current burden of coming up with the appropriate lemmas, but also significantly boosts up the verification process, since lemma applications, coupled with unfolding, often induce a large search space. In the end, our method can automatically reason about a new class of formulas arising from practical program verification.
我们考虑了动态操作数据结构的自动推理问题。基本属性被编码为谓词,谓词的定义通过用户定义的递归规则形式化。传统上,证明这些属性之间的关系仅限于展开匹配(U+M)范式,该范式采用折叠/展开规则的系统转换步骤。使用U+M的证明,当我们找到一个变换序列,它产生一个最终公式,这个公式显然可以通过简单的匹配项来证明。我们在这里的贡献是将归纳法的基本原理添加到这个自动化过程中。我们首先展示了在过程中动态生成的一些证明义务可以在将来用作归纳假设,然后我们展示了如何在归纳步骤中使用这些假设,该步骤除了使用折叠/展开操作获得的证明义务之外,还生成了新的证明义务。虽然在一般情况下,添加归纳是一个明显的需要,但没有一种自动化方法能够以系统和一般的方式包括这一点。其主要原因是避免循环推理的问题。我们用一种新的检查条件克服了这个问题。总之,我们的贡献是一种证明方法-超越U+M -通过将每个证明路径中先前遇到的义务视为可能的归纳假设来执行自动公式重写。在本文的实际评估部分,我们展示了如何使用现实的基准来避免使用未经证明的引理的常用技术。这不仅消除了目前提出适当引理的负担,而且还大大加快了验证过程,因为引理应用加上展开通常会导致很大的搜索空间。最后,通过实际的程序验证,我们的方法可以自动推理出一类新的公式。
{"title":"Automatic induction proofs of data-structures in imperative programs","authors":"D. Chu, J. Jaffar, Minh-Thai Trinh","doi":"10.1145/2737924.2737984","DOIUrl":"https://doi.org/10.1145/2737924.2737984","url":null,"abstract":"We consider the problem of automated reasoning about dynamically manipulated data structures. Essential properties are encoded as predicates whose definitions are formalized via user-defined recursive rules. Traditionally, proving relationships between such properties is limited to the unfold-and-match (U+M) paradigm which employs systematic transformation steps of folding/unfolding the rules. A proof, using U+M, succeeds when we find a sequence of transformations that produces a final formula which is obviously provable by simply matching terms. Our contribution here is the addition of the fundamental principle of induction to this automated process. We first show that some proof obligations that are dynamically generated in the process can be used as induction hypotheses in the future, and then we show how to use these hypotheses in an induction step which generates a new proof obligation aside from those obtained by using the fold/unfold operations. While the adding of induction is an obvious need in general, no automated method has managed to include this in a systematic and general way. The main reason for this is the problem of avoiding circular reasoning. We overcome this with a novel checking condition. In summary, our contribution is a proof method which – beyond U+M – performs automatic formula re-writing by treating previously encountered obligations in each proof path as possible induction hypotheses. In the practical evaluation part of this paper, we show how the commonly used technique of using unproven lemmas can be avoided, using realistic benchmarks. This not only removes the current burden of coming up with the appropriate lemmas, but also significantly boosts up the verification process, since lemma applications, coupled with unfolding, often induce a large search space. In the end, our method can automatically reason about a new class of formulas arising from practical program verification.","PeriodicalId":104101,"journal":{"name":"Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-06-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121954407","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}
引用次数: 47
Autotuning algorithmic choice for input sensitivity 输入灵敏度的自动调谐算法选择
Yufei Ding, Jason Ansel, K. Veeramachaneni, Xipeng Shen, Una-May O’Reilly, Saman P. Amarasinghe
A daunting challenge faced by program performance autotuning is input sensitivity, where the best autotuned configuration may vary with different input sets. This paper presents a novel two-level input learning algorithm to tackle the challenge for an important class of autotuning problems, algorithmic autotuning. The new approach uses a two-level input clustering method to automatically refine input grouping, feature selection, and classifier construction. Its design solves a series of open issues that are particularly essential to algorithmic autotuning, including the enormous optimization space, complex influence by deep input features, high cost in feature extraction, and variable accuracy of algorithmic choices. Experimental results show that the new solution yields up to a 3x speedup over using a single configuration for all inputs, and a 34x speedup over a traditional one-level method for addressing input sensitivity in program optimizations.
程序性能自动调优面临的一个令人生畏的挑战是输入灵敏度,其中最佳的自动调优配置可能因不同的输入集而异。本文提出了一种新的两级输入学习算法来解决一类重要的自调谐问题——算法自调谐的挑战。该方法采用两级输入聚类方法来自动优化输入分组、特征选择和分类器构建。它的设计解决了一系列对算法自整定特别重要的开放性问题,包括巨大的优化空间、深度输入特征的复杂影响、特征提取的高成本以及算法选择的精度多变。实验结果表明,与使用单一配置的所有输入相比,新解决方案的速度提高了3倍,与传统的单级方法相比,在程序优化中解决输入灵敏度问题的速度提高了34倍。
{"title":"Autotuning algorithmic choice for input sensitivity","authors":"Yufei Ding, Jason Ansel, K. Veeramachaneni, Xipeng Shen, Una-May O’Reilly, Saman P. Amarasinghe","doi":"10.1145/2737924.2737969","DOIUrl":"https://doi.org/10.1145/2737924.2737969","url":null,"abstract":"A daunting challenge faced by program performance autotuning is input sensitivity, where the best autotuned configuration may vary with different input sets. This paper presents a novel two-level input learning algorithm to tackle the challenge for an important class of autotuning problems, algorithmic autotuning. The new approach uses a two-level input clustering method to automatically refine input grouping, feature selection, and classifier construction. Its design solves a series of open issues that are particularly essential to algorithmic autotuning, including the enormous optimization space, complex influence by deep input features, high cost in feature extraction, and variable accuracy of algorithmic choices. Experimental results show that the new solution yields up to a 3x speedup over using a single configuration for all inputs, and a 34x speedup over a traditional one-level method for addressing input sensitivity in program optimizations.","PeriodicalId":104101,"journal":{"name":"Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"85 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-06-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121151927","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}
引用次数: 106
期刊
Proceedings of the 36th ACM SIGPLAN 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