This paper proposes Phoenix, a programming model for writing parallel and distributed applications that accommodate dynamically joining/leaving compute resources. In the proposed model, nodes involved in an applicatio...
详细信息
This paper proposes Phoenix, a programming model for writing parallel and distributed applications that accommodate dynamically joining/leaving compute resources. In the proposed model, nodes involved in an application see a large and fixed virtual node name space. They communicate via messages, whose destinations are specified by virtual node names, rather than names bound to a physical resource. We describe Phoenix API and show how it allows a transparent migration of application states, as well as dynamically joining/leaving nodes as its by-product. We also demonstrate through several application studies that Phoenix model is close enough to regular message passing, thus it is a general programming model that facilitates porting many parallel applications/algorithms to more dynamic environments. Experimental results indicate applications that have a small task migration cost can quickly take advantage of dynamically joining resources using Phoenix. Divide-and-conquer algorithms written in Phoenix achieved a good speedup with a large number of nodes across multiple LANs (120 times speedup using 169 CPUs across three LANs). We believe Phoenix provides a useful programming abstraction and platform for emerging parallel applications that must be deployed across multiple LANs and/or shared clusters having dynamically varying resource conditions.
PARLOG is a logic programming language in the sense that nearly every definition and query can be read as a sentence of predicate logic. It differs from PROLOG in incorporating parallel modes of evaluation. For reason...
详细信息
PARLOG is a logic programming language in the sense that nearly every definition and query can be read as a sentence of predicate logic. It differs from PROLOG in incorporating parallel modes of evaluation. For reasons of efficient implementation, it distinguishes and separates and-parallel and or-parallel *** relations are divided into two types: single-solution relations and all-solutions relations. A conjunction of single-solution relation calls can be evaluated in parallel with shared variables acting as communication channels for the passing of partial bindings. Only one solution to each call is computed, using committed choice nondeterminism.A conjunction of all-solutions relation calls is evaluated without communication of partial bindings, but all the solutions may be found by an or-parallel exploration of the different evaluation paths. A set constructor provides the main interface between single-solution relations and all-solutions *** paper is a tutorial introduction to PARLOG. It assumes familiarity with logic programming. Categories and Subject Descriptors: D.l.l [programming Techniques]: Applicative (Functional)
This paper describes the definition and implementation of an OpenMP-like set of directives and library routines for shared memory parallel programming in Java, A specification of the directives and routines is propose...
详细信息
This paper describes the definition and implementation of an OpenMP-like set of directives and library routines for shared memory parallel programming in Java, A specification of the directives and routines is proposed and discussed. A prototype implementation, consisting of a compiler and a runtime library, both written entirely in Java, is presented, which implements most of the proposed specification. Some preliminary performance results are reported. Copyright (C) 2001 John Wiley & Sons, Ltd.
This paper presents the main concepts of the mathematical theory PEI for parallel programming and emphasizes its derivation power. The mathematical basis of this theory leads to a nice implementation in CENTAUR 7 of a...
详细信息
This paper presents the main concepts of the mathematical theory PEI for parallel programming and emphasizes its derivation power. The mathematical basis of this theory leads to a nice implementation in CENTAUR 7 of an environment whose purpose is to transform parallel programs. It is illustrated by two similar examples: the convolution sum and the Dirichlet product. The second one uses non-affine dependencies that can be easily taken into account using PEI.
Code generation and programming have become ever more challenging over the last decade due to the shift towards parallel processing. Emerging processor architectures such as multi-cores and GPUs exploit increasingly p...
详细信息
Code generation and programming have become ever more challenging over the last decade due to the shift towards parallel processing. Emerging processor architectures such as multi-cores and GPUs exploit increasingly parallelism, requiring programmers and compilers to deal with aspects such as threading, concurrency, synchronization, and complex memory partitioning. We advocate that programmers and compilers can greatly benefit from a structured classification of program code. Such a classification can help programmers to find opportunities for parallelization, reason about their code, and interact with other programmers. Similarly, parallelising compilers and source-to-source compilers can take threading and optimization decisions based on the same classification. In this work, we introduce algorithmic species, a classification of affine loop nests based on the polyhedral model and targeted for both automatic and manual use. Individual classes capture information such as the structure of parallelism and the data reuse. To make the classification applicable for manual use, a basic vocabulary forms the base for the creation of a set of intuitive classes. To demonstrate the use of algorithmic species, we identify 115 classes in a benchmark set. Additionally, we demonstrate the suitability of algorithmic species for automated uses by showing a tool to automatically extract species from program code, a species-based source-to-source compiler, and a species-based performance prediction model.
Currently, the need to learn parallel applications topics in students has become an important issue due to the rapid growth in the parallel computing field. In fact, this topic has been included in Computer Science cu...
详细信息
Currently, the need to learn parallel applications topics in students has become an important issue due to the rapid growth in the parallel computing field. In fact, this topic has been included in Computer Science curriculum, but students present difficulties to design MPI parallel applications efficiently. We present a novel methodology for teaching parallel programming centered on improving parallel applications written by students through their experiences obtained during classes. The methodology integrates theoretical and practical sections which are focused on teaching two parallel paradigms, master/Worker and SPMD. These paradigms were selected due to their different communication and computation behaviors, which generate challenges for students when they wish to improve performance application metrics. Our methodology allows students to discover their own errors and how to correct them. In addition, students analyze the issues and advantages in the application designed in order to enhance the performance metrics. Applying this methodology gave us a significant progress in parallel applications designed by students, where we have observed an improvement of around 47% in the students’ skill about parallel programming when they design parallel applications.
Unlike conventional parallel languages, intentional languages let developers think of parallelism first and then use explicit constructs to express sequentialism, instead of the other way around.
Unlike conventional parallel languages, intentional languages let developers think of parallelism first and then use explicit constructs to express sequentialism, instead of the other way around.< >
We present a novel parallel programming model called Cluster-M. This model facilitates the efficient design of highly parallel portable software. The two main components of this model are Cluster-M Specifications and ...
详细信息
We present a novel parallel programming model called Cluster-M. This model facilitates the efficient design of highly parallel portable software. The two main components of this model are Cluster-M Specifications and Cluster-M Representations. A Cluster-M Specification consists of a number of clustering levels emphasizing computation and communication requirements of a parallel solution to a given problem. A Cluster-M Representation on the other hand, represents a multi-layered partitioning of a system graph corresponding; to the topology of the target architecture. An algorithm for generating Cluster-M Representations is given. A set of basic constructs essential for writing Cluster-M Specifications using PCN is presented in this paper. Cluster-M Specifications are mapped onto the Representations using a proposed mapping methodology. Using Cluster-M a single software can be ported among various parallel computing systems.
parallel programming has proved to be an effective technique to increase the performance of computationally intensive applications. However, writing parallel programs is not easy, and activities such as debugging are ...
详细信息
parallel programming has proved to be an effective technique to increase the performance of computationally intensive applications. However, writing parallel programs is not easy, and activities such as debugging are usually hard and time consuming. To cope with these difficulties, skeletal parallel programming has been widely explored in recent years with very promising results. However, prototypal skeletal systems developed so far tend to be rather inflexible and difficult to adapt to many practical parallelization scenarios. For instance, many systems restrict all the substructures of an application being encapsulated together in term of possibly nested skeletons, which may be cumbersome when parallelizing some large and complex applications. Moreover, it is usually difficult to share resources among different skeleton instances and to reuse the same instance of a skeleton in different parts of the code. This paper reports on the current status of the OcamlP3l (2.0) system, which sensibly changes the skeletal model of the previous versions, making it more usable and flexible. In particular, we describe the new skeletons, the new skeletal execution model as well as related issues on design and implementation.
A Functional Abstract Notation (FAN) is proposed for the specification and design of parallel algorithms by means ofskeletons- high-level patterns with parallel semantics. The main weakness of the current programming ...
详细信息
A Functional Abstract Notation (FAN) is proposed for the specification and design of parallel algorithms by means ofskeletons- high-level patterns with parallel semantics. The main weakness of the current programming systems based on skeletons ii that the user is still responsible for finding the most appropriate skeleton composition for a given application and a given parallel architectureWe describe a transformational framework for the development of skeletal programs which is aimed at filling this gap. The framework makes use oftransformation ruleswhich are semantic equivalences among skeleton compositions. For a given problem, an initial, possibly inefficient skeleton specification is refined by applying a sequence of transformations. Transformations are guided by a set of performance prediction models which forecast the behavior of each skeleton and the performance benefits of different rules. The design process is supported by a graphical tool which locates applicable transformations and provides performance estimates, thereby helping the programmer in navigating through the program refinement space. We give an overview of the FAN framework and exemplify its use with performance-directed program derivations for simple case studies. Our experience can be viewed as a first feasibility study of methods and tools for transformational, performance-directed parallel programming using skeletons.
暂无评论