From personal computers using an increasing number of cores, to supercomputers having mil- lions of computing units, parallel architectures are the current standard. The high performance architectures are usually refe...
详细信息
From personal computers using an increasing number of cores, to supercomputers having mil- lions of computing units, parallel architectures are the current standard. The high performance architectures are usually referenced to as hierarchical, as they are composed from clusters of multi-processors of multi-cores. programming such architectures is known to be notoriously difficult. Writing parallel programs is, most of the time, difficult for both the algorithmic and the implementation phase. To answer those concerns, many structured models and languages were proposed in order to increase both expressiveness and efficiency. Among other models, multi-bsp is a bridging model dedicated to hierarchical architecture that ensures efficiency, execution safety, scalability and cost prediction. It is an extension of the well known bsp model that handles flat architectures. In this thesis we introduce the multi-ml language, which allows programming multi-bsp algorithms "a la ml" and thus, guarantees the properties of the multi-bsp model and the ex- ecution safety, thanks to a ml type system. To deal with the multi-level execution model of multi-ml, we defined formal semantics which describe the valid evaluation of an expression. To ensure the execution safety of multi-ml programs, we also propose a typing system that preserves replicated coherence. An abstract machine is defined to formally describe the evalua- tion of a multi-ml program on a multi-bsp architecture. An implementation of the language is available as a compilation toolchain. It is thus possible to generate an efficient parallel code from a program written in multi-ml and execute it on any hierarchical machine.
I am creating a new programming language and editor that is aimed towards authoring interactive behaviors. This language is intended to allow more interaction designers to write their own interactive applications. Thi...
详细信息
Constructivism theory states that learning is unavoidably done through association of new concepts with existing ones. Although programming concepts are abstract metaphors of some colloquial concepts, they seem to be ...
详细信息
Concurrent programs are ubiquitous, from the high-end servers to personal machines, due to the fact of multi-core hardware. Unfortunately, it is difficult to write correct concurrent programs. Stateless Model Checking...
详细信息
Concurrent programs are ubiquitous, from the high-end servers to personal machines, due to the fact of multi-core hardware. Unfortunately, it is difficult to write correct concurrent programs. Stateless Model Checking (SMT) and Deterministic Replay are powerful techniques for systematic testing and reproducing concurrent failures. However, it is challenging to develop efficient and practical SMT and bug reproduction systems due to the exponentially large thread interleaving space which can be exacerbated when it comes to relaxed memory models. In this work, I introduce my research efforts to address the challenges in developing fast and effective SMT and deterministic replay techniques. I present a new model checking technique based on maximal causality reduction for verifying concurrent programs under different memory models. I also optimize the model checker by using static dependency analysis to reduce the constraints size and introducing a new equivalence for checking the seed interleavings, which I call switch equivalence to further reduce the redundant *** debug heisenbugs more efficiently, I presents a new concurrency failure reproduction technique, H3, that enables reproducing concurrency bugs in production runs on commercial off-the-shelf hardware for the first time. H3 integrates the hardware control flow tracing capability provided in recent Intel processors, Processor Tracing (PT), with symbolic constraint analysis. Compared to a state-of-the-art solution, CLAP, this integration allows H3 to reproduce failures with much lower runtime overhead and much more compact control-flow trace. Moreover, it allows us to develop a highly effective core-based constraint reduction technique that reduces the complexity of the generated symbolic constraints from exponential in the trace size to exponential in the number of cores.
We reveal a grey area in the specification of Java and of its implementation through the Java Virtual Machine (JVM): the treatment of initialization of classes and interfaces. We report the results of our experiments ...
详细信息
Find out how to write Kotlin code without overhead and how to use different profiling tools and bytecode viewer to inspect expressions of Kotlin language. Key Features Apply modern Kotlin features to speed up processi...
详细信息
ISBN:
(数字)9781788998352
ISBN:
(纸本)9781788996648
Find out how to write Kotlin code without overhead and how to use different profiling tools and bytecode viewer to inspect expressions of Kotlin language. Key Features Apply modern Kotlin features to speed up processing and implement highly efficient and reliable codes. Learn memory optimization, concurrency, multi-threading, scaling, and caching techniques to achieve high performance. Learn how to prevent unnecessary overhead and use profiling tools to detect performance issues. Book Description The ease with which we write applications has been increasing, but with it comes the need to address their performance. A balancing act between easily implementing complex applications and keeping their performance optimal is a present-day requirement In this book, we explore how to achieve this crucial balance, while developing and deploying applications with Kotlin. The book starts by analyzing various Kotlin specifcations to identify those that have a potentially adverse effect on performance. Then, we move on to monitor techniques that enable us to identify performance bottlenecks and optimize performance metrics. Next, we look at techniques that help to us achieve high performance: memory optimization, concurrency, multi threading, scaling, and caching. We also look at fault tolerance solutions and the importance of logging. We'll also cover best practices of Kotlin programming that will help you to improve the quality of your code base. By the end of the book, you will have gained some insight into various techniques and solutions that will help to create high-performance applications in the Kotlin environment What you will learn Understand the importance of high performance Learn performance metrics Learn popular design patterns currently being used in Kotlin Understand how to apply modern Kotlin features to data processing Learn how to use profling tools Discover how to read bytecode Learn to perform memory optimizations Uncover approaches to the multithreading envi
Program synthesis is the classic problem of automatically finding a program in some search space that satisfies a given correctness specification. Program synthesis significantly impacts software development because i...
详细信息
Program synthesis is the classic problem of automatically finding a program in some search space that satisfies a given correctness specification. Program synthesis significantly impacts software development because it reduces programmers’ efforts to produce programs with daunting detail. Unfortunately, it is usually not enough to produce any correct solution in program synthesis. For many program synthesis problems, there are multiple correct solutions in the search space, but some of them are not expected because, for example, their sizes are too large to be read. Besides, for synthesis problems that admit no solution—we call such synthesis problems unrealizable—, most of the enumeration-based synthesizers do not terminate. Therefore, besides correctness and efficiency, one may want to ask two more questions about a synthesis solver: Can the solver provide a good solution when there are multiple ones? Can the solver provide a proof when there is no solution? In this dissertation, we introduce two types of guarantees in program synthesis: quantitative objectives and proof of unrealizability. First, we present QSyGuS, a synthesis framework extending syntax-guided synthesis (SyGuS) with quantitative syntactic objectives, which allow users to prefer some solutions over others, and an algorithm Quasi of solving QSyGuS problems. Quasi reduces QSyGuS problems to SyGuS problems and solves the reduced problems by off-the-shelf solvers. Second, we introduce two algorithms Nope and Nay of proving the unrealizability of SyGuS problems. Nope is based on the idea of encoding an unrealizable problem as a verification problem. Nay proves the unrealizability with grammar-flow analysis. Finally, we focus on a particular kind of quantitative objectives: asymptotic resource usage. We develop a type-based algorithm SynPlexity for solving synthesis problems with asymptotic resource usage.
Data analysis applications are recently developed by combining multiple programming languages to utilize the advantage of each of them. Such applications are called multilingual applications and can accelerate data-in...
详细信息
Embedding describes the process of encoding a program's syntax and/or semantics in another language—typically a theorem prover in the context of mechanized reasoning. Among different embedding styles, deep embedd...
详细信息
Embedding describes the process of encoding a program's syntax and/or semantics in another language—typically a theorem prover in the context of mechanized reasoning. Among different embedding styles, deep embeddings are generally preferred as they enable the most faithful modeling of the original language. However, deep embeddings are also the most complex, and working with them requires additional effort. In light of that, this dissertation aims to draw more attention to alternative styles, namely shallow and mixed embeddings, by studying their use in mechanized reasoning about programs' properties that are related to "how". More specifically, I present a simple shallow embedding for reasoning about computation costs of lazy programs, and a class of mixed embeddings that are useful for reasoning about properties of general computation patterns in effectful programs. I show the usefulness of these embedding styles with examples based on real-world applications.
An Algorithm to caculate the diameter of triple-loop networks TL(N;1,s,s+2) is presented. C# serving as programming language and SQL Server 2000 serving as database are used to execute the algrithm. The diameter of su...
详细信息
暂无评论