首页 > 最新文献

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

英文 中文
Verified peephole optimizations for CompCert 验证窥视孔优化的CompCert
Eric Mullen, Daryl Zuniga, Zachary Tatlock, D. Grossman
Transformations over assembly code are common in many compilers. These transformations are also some of the most bug-dense compiler components. Such bugs could be elim- inated by formally verifying the compiler, but state-of-the- art formally verified compilers like CompCert do not sup- port assembly-level program transformations. This paper presents Peek, a framework for expressing, verifying, and running meaning-preserving assembly-level program trans- formations in CompCert. Peek contributes four new com- ponents: a lower level semantics for CompCert x86 syntax, a liveness analysis, a library for expressing and verifying peephole optimizations, and a verified peephole optimiza- tion pass built into CompCert. Each of these is accompanied by a correctness proof in Coq against realistic assumptions about the calling convention and the system memory alloca- tor. Verifying peephole optimizations in Peek requires prov- ing only a set of local properties, which we have proved are sufficient to ensure global transformation correctness. We have proven these local properties for 28 peephole transfor- mations from the literature. We discuss the development of our new assembly semantics, liveness analysis, representa- tion of program transformations, and execution engine; de- scribe the verification challenges of each component; and detail techniques we applied to mitigate the proof burden.
汇编代码的转换在许多编译器中都很常见。这些转换也是bug最多的编译器组件之一。这样的bug可以通过正式验证编译器来消除,但是像CompCert这样经过正式验证的最先进的编译器不支持汇编级别的程序转换。本文介绍了Peek,一个在CompCert中表达、验证和运行保持意义的汇编级程序转换的框架。Peek提供了四个新组件:用于CompCert x86语法的低级语义、动态分析、用于表达和验证窥视孔优化的库,以及内置在CompCert中的经过验证的窥视孔优化通道。每种方法都伴随着Coq中对调用约定和系统内存分配器的现实假设的正确性证明。验证Peek中的窥视孔优化只需要证明一组局部属性,我们已经证明这些属性足以确保全局转换的正确性。我们已经从文献中证明了28个小孔变换的这些局部性质。我们讨论了新的汇编语义、动态分析、程序转换的表示和执行引擎的发展;描述每个组件的验证挑战;以及我们用来减轻举证负担的详细技术。
{"title":"Verified peephole optimizations for CompCert","authors":"Eric Mullen, Daryl Zuniga, Zachary Tatlock, D. Grossman","doi":"10.1145/2908080.2908109","DOIUrl":"https://doi.org/10.1145/2908080.2908109","url":null,"abstract":"Transformations over assembly code are common in many compilers. These transformations are also some of the most bug-dense compiler components. Such bugs could be elim- inated by formally verifying the compiler, but state-of-the- art formally verified compilers like CompCert do not sup- port assembly-level program transformations. This paper presents Peek, a framework for expressing, verifying, and running meaning-preserving assembly-level program trans- formations in CompCert. Peek contributes four new com- ponents: a lower level semantics for CompCert x86 syntax, a liveness analysis, a library for expressing and verifying peephole optimizations, and a verified peephole optimiza- tion pass built into CompCert. Each of these is accompanied by a correctness proof in Coq against realistic assumptions about the calling convention and the system memory alloca- tor. Verifying peephole optimizations in Peek requires prov- ing only a set of local properties, which we have proved are sufficient to ensure global transformation correctness. We have proven these local properties for 28 peephole transfor- mations from the literature. We discuss the development of our new assembly semantics, liveness analysis, representa- tion of program transformations, and execution engine; de- scribe the verification challenges of each component; and detail techniques we applied to mitigate the proof burden.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"22 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134119628","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}
引用次数: 49
Latte: a language, compiler, and runtime for elegant and efficient deep neural networks Latte:一种语言、编译器和运行时,用于优雅高效的深度神经网络
L. Truong, R. Barik, E. Totoni, Hai Liu, Chick Markley, A. Fox, T. Shpeisman
Deep neural networks (DNNs) have undergone a surge in popularity with consistent advances in the state of the art for tasks including image recognition, natural language processing, and speech recognition. The computationally expensive nature of these networks has led to the proliferation of implementations that sacrifice abstraction for high performance. In this paper, we present Latte, a domain-specific language for DNNs that provides a natural abstraction for specifying new layers without sacrificing performance. Users of Latte express DNNs as ensembles of neurons with connections between them. The Latte compiler synthesizes a program based on the user specification, applies a suite of domain-specific and general optimizations, and emits efficient machine code for heterogeneous architectures. Latte also includes a communication runtime for distributed memory data-parallelism. Using networks described using Latte, we demonstrate 3-6x speedup over Caffe (C++/MKL) on the three state-of-the-art ImageNet models executing on an Intel Xeon E5-2699 v3 x86 CPU.
随着图像识别、自然语言处理和语音识别等任务的不断发展,深度神经网络(dnn)越来越受欢迎。这些网络在计算上的昂贵特性导致了牺牲抽象来换取高性能的实现的激增。在本文中,我们提出了Latte,这是一种针对dnn的领域特定语言,它为在不牺牲性能的情况下指定新层提供了自然抽象。Latte的使用者将dnn表达为神经元之间的连接集合。Latte编译器根据用户规范合成程序,应用一套特定于领域和通用的优化,并为异构体系结构发出高效的机器码。Latte还包括一个用于分布式内存数据并行的通信运行时。使用Latte描述的网络,我们演示了在英特尔至强E5-2699 v3 x86 CPU上执行的三个最先进的ImageNet模型上比Caffe (c++ /MKL)加速3-6倍。
{"title":"Latte: a language, compiler, and runtime for elegant and efficient deep neural networks","authors":"L. Truong, R. Barik, E. Totoni, Hai Liu, Chick Markley, A. Fox, T. Shpeisman","doi":"10.1145/2908080.2908105","DOIUrl":"https://doi.org/10.1145/2908080.2908105","url":null,"abstract":"Deep neural networks (DNNs) have undergone a surge in popularity with consistent advances in the state of the art for tasks including image recognition, natural language processing, and speech recognition. The computationally expensive nature of these networks has led to the proliferation of implementations that sacrifice abstraction for high performance. In this paper, we present Latte, a domain-specific language for DNNs that provides a natural abstraction for specifying new layers without sacrificing performance. Users of Latte express DNNs as ensembles of neurons with connections between them. The Latte compiler synthesizes a program based on the user specification, applies a suite of domain-specific and general optimizations, and emits efficient machine code for heterogeneous architectures. Latte also includes a communication runtime for distributed memory data-parallelism. Using networks described using Latte, we demonstrate 3-6x speedup over Caffe (C++/MKL) on the three state-of-the-art ImageNet models executing on an Intel Xeon E5-2699 v3 x86 CPU.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"87 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133264517","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}
引用次数: 60
Coverage-directed differential testing of JVM implementations JVM实现的基于覆盖率的差异测试
Yuting Chen, Ting Su, Chengnian Sun, Z. Su, Jianjun Zhao
Java virtual machine (JVM) is a core technology, whose reliability is critical. Testing JVM implementations requires painstaking effort in designing test classfiles (*.class) along with their test oracles. An alternative is to employ binary fuzzing to differentially test JVMs by blindly mutating seeding classfiles and then executing the resulting mutants on different JVM binaries for revealing inconsistent behaviors. However, this blind approach is not cost effective in practice because most of the mutants are invalid and redundant. This paper tackles this challenge by introducing classfuzz, a coverage-directed fuzzing approach that focuses on representative classfiles for differential testing of JVMs’ startup processes. Our core insight is to (1) mutate seeding classfiles using a set of predefined mutation operators (mutators) and employ Markov Chain Monte Carlo (MCMC) sampling to guide mutator selection, and (2) execute the mutants on a reference JVM implementation and use coverage uniqueness as a discipline for accepting representative ones. The accepted classfiles are used as inputs to differentially test different JVM implementations and find defects. We have implemented classfuzz and conducted an extensive evaluation of it against existing fuzz testing algorithms. Our evaluation results show that classfuzz can enhance the ratio of discrepancy-triggering classfiles from 1.7% to 11.9%. We have also reported 62 JVM discrepancies, along with the test classfiles, to JVM developers. Many of our reported issues have already been confirmed as JVM defects, and some even match recent clarifications and changes to the Java SE 8 edition of the JVM specification.
Java虚拟机(JVM)是一项核心技术,其可靠性至关重要。测试JVM实现需要在设计测试类文件(*.class)及其测试oracle时付出艰苦的努力。另一种方法是使用二进制模糊测试对JVM进行差异测试,方法是盲目地改变种子类文件,然后在不同的JVM二进制文件上执行结果的改变,以揭示不一致的行为。然而,由于大多数突变体是无效的和冗余的,这种盲方法在实践中并不具有成本效益。本文通过引入classfuzz来解决这个问题,classfuzz是一种面向覆盖率的模糊测试方法,主要关注用于对jvm启动过程进行差异测试的代表性类文件。我们的核心观点是:(1)使用一组预定义的突变操作符(mutators)来改变种子类文件,并使用马尔可夫链蒙特卡罗(Markov Chain Monte Carlo, MCMC)采样来指导突变符的选择,(2)在参考JVM实现上执行突变,并使用覆盖唯一性作为接受代表性突变的准则。接受的类文件用作输入,以不同的方式测试不同的JVM实现并发现缺陷。我们已经实现了classfuzz,并针对现有的模糊测试算法对其进行了广泛的评估。我们的评估结果表明,classfuzz可以将触发差异的类文件的比率从1.7%提高到11.9%。我们还向JVM开发人员报告了62个JVM差异,以及测试类文件。我们报告的许多问题已经被确认为JVM缺陷,其中一些甚至与Java SE 8版JVM规范的最新澄清和更改相匹配。
{"title":"Coverage-directed differential testing of JVM implementations","authors":"Yuting Chen, Ting Su, Chengnian Sun, Z. Su, Jianjun Zhao","doi":"10.1145/2908080.2908095","DOIUrl":"https://doi.org/10.1145/2908080.2908095","url":null,"abstract":"Java virtual machine (JVM) is a core technology, whose reliability is critical. Testing JVM implementations requires painstaking effort in designing test classfiles (*.class) along with their test oracles. An alternative is to employ binary fuzzing to differentially test JVMs by blindly mutating seeding classfiles and then executing the resulting mutants on different JVM binaries for revealing inconsistent behaviors. However, this blind approach is not cost effective in practice because most of the mutants are invalid and redundant. This paper tackles this challenge by introducing classfuzz, a coverage-directed fuzzing approach that focuses on representative classfiles for differential testing of JVMs’ startup processes. Our core insight is to (1) mutate seeding classfiles using a set of predefined mutation operators (mutators) and employ Markov Chain Monte Carlo (MCMC) sampling to guide mutator selection, and (2) execute the mutants on a reference JVM implementation and use coverage uniqueness as a discipline for accepting representative ones. The accepted classfiles are used as inputs to differentially test different JVM implementations and find defects. We have implemented classfuzz and conducted an extensive evaluation of it against existing fuzz testing algorithms. Our evaluation results show that classfuzz can enhance the ratio of discrepancy-triggering classfiles from 1.7% to 11.9%. We have also reported 62 JVM discrepancies, along with the test classfiles, to JVM developers. Many of our reported issues have already been confirmed as JVM defects, and some even match recent clarifications and changes to the Java SE 8 edition of the JVM specification.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125638995","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}
引用次数: 129
From Datalog to flix: a declarative language for fixed points on lattices 从Datalog到flix:格上不动点的声明性语言
Magnus Madsen, Ming-Ho Yee, O. Lhoták
We present Flix, a declarative programming language for specifying and solving least fixed point problems, particularly static program analyses. Flix is inspired by Datalog and extends it with lattices and monotone functions. Using Flix, implementors of static analyses can express a broader range of analyses than is currently possible in pure Datalog, while retaining its familiar rule-based syntax. We define a model-theoretic semantics of Flix as a natural extension of the Datalog semantics. This semantics captures the declarative meaning of Flix programs without imposing any specific evaluation strategy. An efficient strategy is semi-naive evaluation which we adapt for Flix. We have implemented a compiler and runtime for Flix, and used it to express several well-known static analyses, including the IFDS and IDE algorithms. The declarative nature of Flix clearly exposes the similarity between these two algorithms.
我们提出了Flix,一个用于指定和解决最小不动点问题的声明性编程语言,特别是静态程序分析。Flix的灵感来自Datalog,并将其扩展为格和单调函数。使用Flix,静态分析的实现者可以表达比纯Datalog更广泛的分析范围,同时保留其熟悉的基于规则的语法。我们定义了Flix的模型理论语义,作为Datalog语义的自然扩展。该语义捕获Flix程序的声明性含义,而不强加任何特定的求值策略。半天真评估是一种有效的策略,我们将其用于Flix。我们已经为Flix实现了一个编译器和运行时,并使用它来表达几个众所周知的静态分析,包括IFDS和IDE算法。Flix的声明性质清楚地揭示了这两种算法之间的相似性。
{"title":"From Datalog to flix: a declarative language for fixed points on lattices","authors":"Magnus Madsen, Ming-Ho Yee, O. Lhoták","doi":"10.1145/2908080.2908096","DOIUrl":"https://doi.org/10.1145/2908080.2908096","url":null,"abstract":"We present Flix, a declarative programming language for specifying and solving least fixed point problems, particularly static program analyses. Flix is inspired by Datalog and extends it with lattices and monotone functions. Using Flix, implementors of static analyses can express a broader range of analyses than is currently possible in pure Datalog, while retaining its familiar rule-based syntax. We define a model-theoretic semantics of Flix as a natural extension of the Datalog semantics. This semantics captures the declarative meaning of Flix programs without imposing any specific evaluation strategy. An efficient strategy is semi-naive evaluation which we adapt for Flix. We have implemented a compiler and runtime for Flix, and used it to express several well-known static analyses, including the IFDS and IDE algorithms. The declarative nature of Flix clearly exposes the similarity between these two algorithms.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"158 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116355916","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
A design and verification methodology for secure isolated regions 安全隔离区域的设计和验证方法
Rohit Sinha, Manuel Costa, A. Lal, Nuno P. Lopes, S. Rajamani, S. Seshia, K. Vaswani
Hardware support for isolated execution (such as Intel SGX) enables development of applications that keep their code and data confidential even while running in a hostile or compromised host. However, automatically verifying that such applications satisfy confidentiality remains challenging. We present a methodology for designing such applications in a way that enables certifying their confidentiality. Our methodology consists of forcing the application to communicate with the external world through a narrow interface, compiling it with runtime checks that aid verification, and linking it with a small runtime that implements the narrow interface. The runtime includes services such as secure communication channels and memory management. We formalize this restriction on the application as Information Release Confinement (IRC), and we show that it allows us to decompose the task of proving confidentiality into (a) one-time, human-assisted functional verification of the runtime to ensure that it does not leak secrets, (b) automatic verification of the application's machine code to ensure that it satisfies IRC and does not directly read or corrupt the runtime's internal state. We present /CONFIDENTIAL: a verifier for IRC that is modular, automatic, and keeps our compiler out of the trusted computing base. Our evaluation suggests that the methodology scales to real-world applications.
对隔离执行的硬件支持(如Intel SGX)使开发的应用程序即使在恶意或受威胁的主机上运行时也能保持代码和数据的机密性。然而,自动验证这些应用程序是否满足机密性仍然具有挑战性。我们提出了一种方法来设计这样的应用程序,使其能够证明其机密性。我们的方法包括:强制应用程序通过狭窄的接口与外部世界通信,使用有助于验证的运行时检查对其进行编译,并将其与实现狭窄接口的小型运行时链接起来。运行时包括安全通信通道和内存管理等服务。我们将应用程序上的这种限制形式化为信息发布限制(Information Release Confinement, IRC),并表明它允许我们将证明机密性的任务分解为:(a)对运行时进行一次性的、人工辅助的功能验证,以确保它不会泄露机密;(b)对应用程序的机器码进行自动验证,以确保它满足IRC要求,并且不会直接读取或破坏运行时的内部状态。我们提出/CONFIDENTIAL:一个用于IRC的验证器,它是模块化的、自动的,并且使我们的编译器远离可信计算基础。我们的评估表明,该方法适用于实际应用。
{"title":"A design and verification methodology for secure isolated regions","authors":"Rohit Sinha, Manuel Costa, A. Lal, Nuno P. Lopes, S. Rajamani, S. Seshia, K. Vaswani","doi":"10.1145/2908080.2908113","DOIUrl":"https://doi.org/10.1145/2908080.2908113","url":null,"abstract":"Hardware support for isolated execution (such as Intel SGX) enables development of applications that keep their code and data confidential even while running in a hostile or compromised host. However, automatically verifying that such applications satisfy confidentiality remains challenging. We present a methodology for designing such applications in a way that enables certifying their confidentiality. Our methodology consists of forcing the application to communicate with the external world through a narrow interface, compiling it with runtime checks that aid verification, and linking it with a small runtime that implements the narrow interface. The runtime includes services such as secure communication channels and memory management. We formalize this restriction on the application as Information Release Confinement (IRC), and we show that it allows us to decompose the task of proving confidentiality into (a) one-time, human-assisted functional verification of the runtime to ensure that it does not leak secrets, (b) automatic verification of the application's machine code to ensure that it satisfies IRC and does not directly read or corrupt the runtime's internal state. We present /CONFIDENTIAL: a verifier for IRC that is modular, automatic, and keeps our compiler out of the trusted computing base. Our evaluation suggests that the methodology scales to real-world applications.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125918574","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}
引用次数: 69
Lightweight computation tree tracing for lazy functional languages 用于惰性函数语言的轻量级计算树跟踪
M. Faddegon, O. Chitil
A computation tree of a program execution describes computations of functions and their dependencies. A computation tree describes how a program works and is at the heart of algorithmic debugging. To generate a computation tree, existing algorithmic debuggers either use a complex implementation or yield a less informative approximation. We present a method for lazy functional languages that requires only a simple tracing library to generate a detailed computation tree. With our algorithmic debugger a programmer can debug any Haskell program by only importing our library and annotating suspected functions.
程序执行的计算树描述了函数及其依赖关系的计算。计算树描述程序如何工作,是算法调试的核心。为了生成计算树,现有的算法调试器要么使用复杂的实现,要么生成信息较少的近似值。我们提出了一种惰性函数语言的方法,它只需要一个简单的跟踪库来生成详细的计算树。使用我们的算法调试器,程序员可以通过导入我们的库并注释可疑函数来调试任何Haskell程序。
{"title":"Lightweight computation tree tracing for lazy functional languages","authors":"M. Faddegon, O. Chitil","doi":"10.1145/2908080.2908104","DOIUrl":"https://doi.org/10.1145/2908080.2908104","url":null,"abstract":"A computation tree of a program execution describes computations of functions and their dependencies. A computation tree describes how a program works and is at the heart of algorithmic debugging. To generate a computation tree, existing algorithmic debuggers either use a complex implementation or yield a less informative approximation. We present a method for lazy functional languages that requires only a simple tracing library to generate a detailed computation tree. With our algorithmic debugger a programmer can debug any Haskell program by only importing our library and annotating suspected functions.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121700111","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
Verifying bit-manipulations of floating-point 验证浮点数的位操作
Wonyeol Lee, Rahul Sharma, A. Aiken
Reasoning about floating-point is difficult and becomes only more so if there is an interplay between floating-point and bit-level operations. Even though real-world floating-point libraries use implementations that have such mixed computations, no systematic technique to verify the correctness of the implementations of such computations is known. In this paper, we present the first general technique for verifying the correctness of mixed binaries, which combines abstraction, analytical optimization, and testing. The technique provides a method to compute an error bound of a given implementation with respect to its mathematical specification. We apply our technique to Intel's implementations of transcendental functions and prove formal error bounds for these widely used routines.
关于浮点的推理是困难的,如果在浮点和位级操作之间存在相互作用,就会变得更加困难。即使现实世界的浮点库使用具有这种混合计算的实现,也没有已知的系统技术来验证这种计算实现的正确性。在本文中,我们提出了验证混合二进制文件正确性的第一种通用技术,它结合了抽象、分析优化和测试。该技术提供了一种方法来计算给定实现相对于其数学规范的错误边界。我们将我们的技术应用于英特尔的超越函数实现,并证明了这些广泛使用的例程的正式错误界限。
{"title":"Verifying bit-manipulations of floating-point","authors":"Wonyeol Lee, Rahul Sharma, A. Aiken","doi":"10.1145/2908080.2908107","DOIUrl":"https://doi.org/10.1145/2908080.2908107","url":null,"abstract":"Reasoning about floating-point is difficult and becomes only more so if there is an interplay between floating-point and bit-level operations. Even though real-world floating-point libraries use implementations that have such mixed computations, no systematic technique to verify the correctness of the implementations of such computations is known. In this paper, we present the first general technique for verifying the correctness of mixed binaries, which combines abstraction, analytical optimization, and testing. The technique provides a method to compute an error bound of a given implementation with respect to its mathematical specification. We apply our technique to Intel's implementations of transcendental functions and prove formal error bounds for these widely used routines.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117036039","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
Fast synthesis of fast collections 快速集合的快速合成
Calvin Loncaric, E. Torlak, Michael D. Ernst
Many applications require specialized data structures not found in the standard libraries, but implementing new data structures by hand is tedious and error-prone. This paper presents a novel approach for synthesizing efficient implementations of complex collection data structures from high-level specifications that describe the desired retrieval operations. Our approach handles a wider range of data structures than previous work, including structures that maintain an order among their elements or have complex retrieval methods. We have prototyped our approach in a data structure synthesizer called Cozy. Four large, real-world case studies compare structures generated by Cozy against handwritten implementations in terms of correctness and performance. Structures synthesized by Cozy match the performance of handwritten data structures while avoiding human error.
许多应用程序需要在标准库中找不到的专用数据结构,但是手工实现新的数据结构既繁琐又容易出错。本文提出了一种从描述所需检索操作的高级规范中综合复杂集合数据结构的有效实现的新方法。我们的方法比以前的工作处理更广泛的数据结构,包括在元素之间保持顺序或具有复杂检索方法的结构。我们在一个名为Cozy的数据结构合成器中建立了我们的方法的原型。四个大型的真实案例研究比较了Cozy生成的结构与手写实现在正确性和性能方面的差异。Cozy合成的结构符合手写数据结构的性能,同时避免了人为错误。
{"title":"Fast synthesis of fast collections","authors":"Calvin Loncaric, E. Torlak, Michael D. Ernst","doi":"10.1145/2908080.2908122","DOIUrl":"https://doi.org/10.1145/2908080.2908122","url":null,"abstract":"Many applications require specialized data structures not found in the standard libraries, but implementing new data structures by hand is tedious and error-prone. This paper presents a novel approach for synthesizing efficient implementations of complex collection data structures from high-level specifications that describe the desired retrieval operations. Our approach handles a wider range of data structures than previous work, including structures that maintain an order among their elements or have complex retrieval methods. We have prototyped our approach in a data structure synthesizer called Cozy. Four large, real-world case studies compare structures generated by Cozy against handwritten implementations in terms of correctness and performance. Structures synthesized by Cozy match the performance of handwritten data structures while avoiding human error.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"7 6","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"120852303","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}
引用次数: 39
Cartesian hoare logic for verifying k-safety properties 验证k-安全性质的笛卡尔hoare逻辑
Marcelo Sousa, Işıl Dillig
Unlike safety properties which require the absence of a “bad” program trace, k-safety properties stipulate the absence of a “bad” interaction between k traces. Examples of k-safety properties include transitivity, associativity, anti-symmetry, and monotonicity. This paper presents a sound and relatively complete calculus, called Cartesian Hoare Logic (CHL), for verifying k-safety properties. We also present an automated verification algorithm based on CHL and implement it in a tool called DESCARTES. We use DESCARTES to analyze user-defined relational operators in Java and demonstrate that DESCARTES is effective at verifying (or finding violations of) multiple k-safety properties.
不像安全属性要求没有“坏的”程序跟踪,k-安全属性规定k个跟踪之间没有“坏的”交互。k-安全性质的例子包括传递性、结合性、反对称性和单调性。本文提出了一种可靠且相对完整的微积分,称为笛卡尔Hoare逻辑(CHL),用于验证k-安全性质。我们还提出了一种基于CHL的自动验证算法,并在一个名为DESCARTES的工具中实现。我们使用DESCARTES来分析Java中用户定义的关系运算符,并证明DESCARTES在验证(或发现违反)多个k-安全属性方面是有效的。
{"title":"Cartesian hoare logic for verifying k-safety properties","authors":"Marcelo Sousa, Işıl Dillig","doi":"10.1145/2908080.2908092","DOIUrl":"https://doi.org/10.1145/2908080.2908092","url":null,"abstract":"Unlike safety properties which require the absence of a “bad” program trace, k-safety properties stipulate the absence of a “bad” interaction between k traces. Examples of k-safety properties include transitivity, associativity, anti-symmetry, and monotonicity. This paper presents a sound and relatively complete calculus, called Cartesian Hoare Logic (CHL), for verifying k-safety properties. We also present an automated verification algorithm based on CHL and implement it in a tool called DESCARTES. We use DESCARTES to analyze user-defined relational operators in Java and demonstrate that DESCARTES is effective at verifying (or finding violations of) multiple k-safety properties.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"10 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126652732","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}
引用次数: 117
Effective padding of multidimensional arrays to avoid cache conflict misses 有效填充多维数组以避免缓存冲突丢失
Changwan Hong, Wenlei Bao, Albert Cohen, S. Krishnamoorthy, L. Pouchet, F. Rastello, J. Ramanujam, P. Sadayappan
Caches are used to significantly improve performance. Even with high degrees of set associativity, the number of accessed data elements mapping to the same set in a cache can easily exceed the degree of associativity. This can cause conflict misses and lower performance, even if the working set is much smaller than cache capacity. Array padding (increasing the size of array dimensions) is a well-known optimization technique that can reduce conflict misses. In this paper, we develop the first algorithms for optimal padding of arrays aimed at a set-associative cache for arbitrary tile sizes. In addition, we develop the first solution to padding for nested tiles and multi-level caches. Experimental results with multiple benchmarks demonstrate a significant performance improvement from padding.
使用缓存可以显著提高性能。即使具有高度的集合结合性,映射到缓存中同一集合的访问数据元素的数量也很容易超过结合性的程度。这可能导致冲突缺失和较低的性能,即使工作集比缓存容量小得多。数组填充(增加数组维度的大小)是一种众所周知的优化技术,可以减少冲突缺失。在本文中,我们开发了第一种算法,用于针对任意瓷砖大小的集合关联缓存的数组的最佳填充。此外,我们还开发了第一个针对嵌套块和多级缓存填充的解决方案。多个基准测试的实验结果表明,填充可以显著提高性能。
{"title":"Effective padding of multidimensional arrays to avoid cache conflict misses","authors":"Changwan Hong, Wenlei Bao, Albert Cohen, S. Krishnamoorthy, L. Pouchet, F. Rastello, J. Ramanujam, P. Sadayappan","doi":"10.1145/2908080.2908123","DOIUrl":"https://doi.org/10.1145/2908080.2908123","url":null,"abstract":"Caches are used to significantly improve performance. Even with high degrees of set associativity, the number of accessed data elements mapping to the same set in a cache can easily exceed the degree of associativity. This can cause conflict misses and lower performance, even if the working set is much smaller than cache capacity. Array padding (increasing the size of array dimensions) is a well-known optimization technique that can reduce conflict misses. In this paper, we develop the first algorithms for optimal padding of arrays aimed at a set-associative cache for arbitrary tile sizes. In addition, we develop the first solution to padding for nested tiles and multi-level caches. Experimental results with multiple benchmarks demonstrate a significant performance improvement from padding.","PeriodicalId":178839,"journal":{"name":"Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation","volume":"119 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114980120","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}
引用次数: 21
期刊
Proceedings of the 37th 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