Writing high-performance GPU implementations of graph algorithms can be challenging. In this paper, we argue that three optimizations called throughput optimizations are key to high-performance for this application cl...
详细信息
Writing high-performance GPU implementations of graph algorithms can be challenging. In this paper, we argue that three optimizations called throughput optimizations are key to high-performance for this application class. These optimizations describe a large implementation space making it unrealistic for programmers to implement them by hand. To address this problem, we have implemented these optimizations in a compiler that produces CUDA code from an intermediate-level program representation called IrGL. Compared to state-of-the-art handwritten CUDA implementations of eight graph applications, code generated by the IrGL compiler is up to 5.95x times faster (median 1.4x) for five applications and never more than 30% slower for the others. Throughput optimizations contribute an improvement up to 4.16x (median 1.4x) to the performance of unoptimized IrGL code.
The proceedings contain 25 papers. The special focus in this conference is on Concurrent and Distributed systems. The topics include: The death of object-orientedprogramming;automated choreography repair;a graph-base...
ISBN:
(纸本)9783662496640
The proceedings contain 25 papers. The special focus in this conference is on Concurrent and Distributed systems. The topics include: The death of object-orientedprogramming;automated choreography repair;a graph-based semantics workbench for concurrent asynchronous programs;a formal framework for modeling hadoop YARN clusters;integrated environment for verifying and running distributed components;iterative and incremental model generation by logic solvers;automated model merge by design space exploration;automatic construction of variability-based model transformation rules;two-step transformation of model traversal EOL queries for large CDO repositories;cut branches before looking for bugs;the influences of edge instability on change propagation and connectivity in call graphs;modeling and abstraction of memory management in a hypervisor;crowdsourced bug triaging;model-based testing of probabilistic systems;an iterative decision-making scheme for markov decision processes and its application to self-adaptive systems;family-based modeling and analysis for probabilistic systems;statistical model checking of e-motions domain-specific modeling languages;towards formal proof metrics;reduction rules for colored workflow nets;many-valued institutions for constraint specification;a cafeOBJ interpreter in maude;on the formal correctness of an LTS transformation verification technique;hybrid session verification through endpoint API generation and partial variable assignment interpolatoR.
object-constraint programmingsystems integrate declarative constraint solving with imperative, object-oriented languages, seamlessly providing the power of both paradigms. However, experience with object-constraint s...
详细信息
ISBN:
(纸本)9781450336895
object-constraint programmingsystems integrate declarative constraint solving with imperative, object-oriented languages, seamlessly providing the power of both paradigms. However, experience with object-constraint systems has shown that giving too much power to the constraint solver opens up the potential for solutions that are surprising and unintended as well as for complex interactions between constraints and imperative code. On the other hand, systems that overly limit the power of the solver, for example by disallowing constraints involving mutable objects, object identity, or polymorphic message sends, run the risk of excluding the core object-oriented features of the language from the constraint part, and consequently not being able to express declaratively a large set of interesting problem solutions. In this paper we present design principles that tame the power of the constraint solver in object-constraint languages to avoid difficult corner cases and surprising solutions while retaining the key features of the approach, including constraints over mutable objects, constraints involving object identity, and constraints on the results of message sends. We present our solution concretely in the context of the Babelsberg object-constraint language framework, providing both an informal description of the resulting language and a formal semantics for a core subset of it. We validate the utility of this semantics with an executable version that allows us to run test programs and to verify that they provide the same results as existing implementations of Babelsberg in JavaScript, Ruby, and Smalltalk.
JavaScript is a dynamic functional object-orientedprogramming language that can not only be used for enriching a web page, but also for implementing various kinds of web applications, including web-based simulations,...
详细信息
ISBN:
(纸本)9781509044849
JavaScript is a dynamic functional object-orientedprogramming language that can not only be used for enriching a web page, but also for implementing various kinds of web applications, including web-based simulations, which can be executed on front-end devices, such as mobile phones, tablets and desktop computers, as well as on powerful back-end computers, possibly in some cloud infrastructure. Although JavaScript cannot compete with strongly typed compiled languages (such as C++, Java and C#) on speed, it provides sufficient performance for many types of simulations and outperforms its competitors on ease of use and developer productivity, especially for web-based simulation. This tutorial provides a two-fold introduction: (1) to JavaScript programming using the topic of simulation, and (2) to simulation using the programming language JavaScript. It shows how to implement a Monte Carlo simulation, a continuous state change simulation and a discrete event simulation, using the power of JavaScript and the web.
Considering that multithreaded applications may be implemented using several programming languages and paradigms, in this work we show how they influence performance, energy consumption and energy-delay product (EDP)....
详细信息
Considering that multithreaded applications may be implemented using several programming languages and paradigms, in this work we show how they influence performance, energy consumption and energy-delay product (EDP). For that, we evaluate a subset of the NAS Parallel Benchmark, implemented in both procedural (C) and object-orientedprogramming languages (C++ and Java). We also investigate the overhead of Virtual Machines (VM) and the improvement that the Just-In-Time (JIT) compiler may provide. We show that the procedural language has better scalability than object-oriented ones, i.e., the improvements in performance, EDP, and energy savings are better in C than in C++ and Java as the number of threads increases; and that C can be up to 76 times faster than Java, even with the JIT mechanism enabled. We also demonstrate that the Java JIT effectiveness may vary according to the benchmark (1.16 and 23.97 times in performance and 1.19 to 19.85 times in energy consumption compared to the VM without JIT); and when it reaches good optimization levels, it can be up to 23% faster, consuming 42% less energy, and having an EDP 58% lower than C++.
NOOL-15 is a new unsponsored workshop to bring together users and implementors of new(ish) objectorientedsystems. Through presentations, and panel discussions, as well as demonstrations, and video and audiotapes, NO...
详细信息
ISBN:
(纸本)9781450337229
NOOL-15 is a new unsponsored workshop to bring together users and implementors of new(ish) objectorientedsystems. Through presentations, and panel discussions, as well as demonstrations, and video and audiotapes, NOOL-15 will provide a forum for sharing experience and knowledge among experts and novices alike.
Renew (The Reference NetWorkshop) is an extensible Petri net IDE that supports the development and execution of high-level Petri nets and other modeling techniques. The Reference net formalism - the major formalism fo...
详细信息
ISBN:
(纸本)9783319390857;9783319390864
Renew (The Reference NetWorkshop) is an extensible Petri net IDE that supports the development and execution of high-level Petri nets and other modeling techniques. The Reference net formalism - the major formalism for Renew - includes concepts such as net instances, synchronous channels and seamless Java integration. It combines the advantages of Petri nets and object-orientedprogramming for the development of concurrent and distributed software systems. Modeling support of Renew focuses on convenience and ease for Petri net development. An outstanding feature is the support for multi-formalism simulation. The plugin architecture of Renew enables the developers to extend the IDE for instance with additional formalisms. Alternatively to the inline mode - within the graphical user interface - the Simulator can also be run in a headless server fashion. Several configurations of Renew are available, which are constituted through selections of plugins providing specialized functionality for multiple platforms. In this manner the Renew family constitutes a product line architecture. Renew is available free of charge including the Java source code. In this contribution we provide information about Renew's functionality and architecture as well as the development of the tool set over the last decade.
Action languages represent an emerging paradigm where modeling abstractions are embedded in code to bridge the gap with visual models, such as UML models. The paradigm is gaining momentum, evident by the growing numbe...
详细信息
ISBN:
(纸本)9781509058983
Action languages represent an emerging paradigm where modeling abstractions are embedded in code to bridge the gap with visual models, such as UML models. The paradigm is gaining momentum, evident by the growing number of tools and standards that support this paradigm. In this paper, we report on a controlled experiment to assess the comprehensibility of those languages and compare it to that of object-oriented (OO) programming languages. We further report on the impact of also having access to the UML notation on the comprehensibility of those languages. Results suggest that action languages are significantly more comprehensible than traditional OO languages. Furthermore, there was not a significant improvement in comprehensibility when the UML notation was used along with both OO and action language code. We conclude that action languages are a promising alternative to traditional OO languages for specifying details, yet seem to be as comprehensible as high-level visual models.
Many JavaScript programs are written in an event-driven style. In particular, in server-side Node. js applications, operations involving sockets, streams, and files are typically performed in an asynchronous manner, w...
详细信息
ISBN:
(纸本)9781450336895
Many JavaScript programs are written in an event-driven style. In particular, in server-side Node. js applications, operations involving sockets, streams, and files are typically performed in an asynchronous manner, where the execution of listeners is triggered by events. Several types of programming errors are specific to such event-based programs (e.g., unhandled events, and listeners that are registered too late). We present the event-based call graph, a program representation that can be used to detect bugs related to event handling. We have designed and implemented three analyses for constructing event-based call graphs. Our results show that these analyses are capable of detecting problems reported on StackOverflow. Moreover, we show that the number of false positives reported by the analysis on a suite of small Node. js applications is manageable.
Internet of Things (IoT) applications are naturally dynamic in that unexpected changes and failures may occur on smart devices, on network connection and interaction between the devices, or in the environment where th...
详细信息
ISBN:
(纸本)9781509023240
Internet of Things (IoT) applications are naturally dynamic in that unexpected changes and failures may occur on smart devices, on network connection and interaction between the devices, or in the environment where they are situated. To maintain the robustness of IoT applications, smart devices should be able to adapt the way they operate upon changes and failures. However, the adaptive capability of smart devices may cause IoT applications to exhibit unpredictable behavior at runtime, and thus the adaptive behaviors should be implemented in a simulated environment before they are realized in the actual environment. This paper proposes a programming language extended from AgentSpeak(L) for implementing adaptive smart devices as multiagent systems. To easily implement adaptive behavior, the programming language should allow the separation of adaptive capabilities and core functionalities. Such feature has not been supported by existing agent-orientedprogramming languages that tend to mix the two. The case study demonstrates that the proposed language improves maintainability of the programs compared to that of AgentSpeak(L).
暂无评论