Haskell#: Parallel Programming Made Simple and Efficient
Journal of Universal Computer Science
Volume 9, Issue 8
This paper presents the final result of the designing of a new specification for the Haskell# Language, including new... more This paper presents the final result of the designing of a new specification for the Haskell# Language, including new features to increase its expressiveness, but without losing either efficiency or obedience to its original premisses.
17 views
Seen by:A Type System for Parallel Components
The first paper we have written about HTS (Hash Type System), in 2009, the type system of the HPE platform. It was not published.
The # component model was proposed to improve the practice of parallel programming. This paper introduces a type... more The # component model was proposed to improve the practice of parallel programming. This paper introduces a type system for # programming systems, aiming to lift the abstraction and safety of programming for parallel computing architectures by introducing a notion of abstract component based on universal and existential bounded quantification. Issues about the implementation of such type system in HPE, a # programming system, are also discussed.
Parallelizing MCP-Haskell for Evaluating Haskel# Parallel Programming Environment
Proceedings of the 2001 Brazilian Symposium on Computer Architectures and High Performance Computing (SBAC-PAD'2001)
In this paper, we present the parallelization of a sequential functional implementation of a Monte Carlo Transport... more In this paper, we present the parallelization of a sequential functional implementation of a Monte Carlo Transport Problem, called MCP- Haskell[Hammes et al., 1995], using Haskell # . This experiment gave us important feedback for evaluating Haskell # features, helping us to answer some questions, like how expressive is Haskell # for representing known parallel computational patterns, how easy it is to build large scale parallel programs in an elegant and concise way, and how efficient are Haskell # programs. Based on our conclusions, we suggest new features to be incorporated in Haskell # to improve its expressiveness and performance. We also present the performance figures for the MCP-Haskell # benchmark.
Coordinating Functional Processes with Haskell#
Proceedings of the 2002 ACM symposium on Applied computing (SAC'2002)
Special Track on Coordination Models and Languages
This paper presents Haskell#, a parallel functional language based on coordination. Haskell# supports lazy stream... more This paper presents Haskell#, a parallel functional language based on coordination. Haskell# supports lazy stream communication and facilities, at coordination level, to the specification of data parallel programs. Haskell# supports a clean and complete, semantic and syntactic, separation between coordination and computation levels of programming, with several benefits to parallel program engineering. The implementation of some well-known applications in Haskell# is presented, demonstrating its expressiveness, allowing for elegant, simple, and concise specification of any static pattern of parallel, concurrent or distributed computation.
2 views
Seen by:Design and Implementation of an Environment for Component-Based Parallel Programming
Lecture Notes in Computer Science
Volume 4395, pages 184-197, 2007
DOI: 10.1007/978-3-540-71351-7_15
Motivated by the inadequacy of current parallel programming artifacts, the # component model was proposed to meet the... more Motivated by the inadequacy of current parallel programming artifacts, the # component model was proposed to meet the new complexity of high performance computing (HPC). It has solid formal foundations, layed on category theory and Petri nets. This paper presents some important design and implementation issues on the implementation of programming frameworks based on the # component model.
Using Aspects for Supporting Procedural Modules in # Programming
Lecture Notes in Computer Science
Vol. 3648, pages 730-739.
January 2005
Proceedings of Euro-Par'2005
Parallel programming still demands for higher-level lan- guages, models, and tools that do not incur in performance... more Parallel programming still demands for higher-level lan- guages, models, and tools that do not incur in performance penalties. The # programming model aims to meet those claims in large-scale programs. This paper describes how the # programming model works with procedural languages by using techniques from AOP (Aspect Oriented Programming). Performance comparisons with MPI are presented.
A Component Model for High Level and Efficient Parallel Programming on Distributed Architectures
Proceedings of 2005 IADIS International Conference on Applied Computing (IADIS'2005)
Volume 2
June 2005
The computer science community has claimed for parallel languages and models with a higher level of abstraction and... more The computer science community has claimed for parallel languages and models with a higher level of abstraction and modularity, without performance penalties, that could be used in conjunction with advanced software engineering techniques, and that are suitable to work with large-scale programs. This paper presents general aspects about the #1 parallel programming model and its associated programming environment, designed to address these issues.
High Level Service Connectors for Components-Based High Performance Computing
Proceeding of the 19th International Symposium on on Computer Architecture and High Performance Computing, 2007 (SBAC-PAD 2007).
Component-based programming has been applied to address the requirements of applications in high performance computing... more Component-based programming has been applied to address the requirements of applications in high performance computing (HPC). The usual service connectors of commercial component models do not fit some requirements of HPC, mainly regarding the support of parallelism, however. This paper looks at extensions to the usual notion of service connector to meet such requirements, using the # component model as a substratum, evidencing its expressiveness.
Separation of Concerns for Improving the Practice of Parallel Programming
INFORMATION, An International Journal
Volume 8, Number 5, pp. 621-638
2005
The computer science community has been looking for parallel languages and models with a higher level of abstraction... more The computer science community has been looking for parallel languages and models with a higher level of abstraction and modularity, without performance penalties, that could be used in conjunction with advanced software engineering techniques, and that are suitable to work with large-scale programs. This paper discusses how the # parallel programming model addresses issues of modularity and abstraction of parallel programs using the techniques of separation of concerns.
A Language for Object-Oriented Parallel Programming Targeted at Cluster Computing Platforms
Proceedings of the 14th Brazilian Symposium on Programming Languages (SBLP'2010)
In object-oriented (OO) languages, the ability to encapsulate software concerns of the dominant decomposition in... more In object-oriented (OO) languages, the ability to encapsulate software concerns of the dominant decomposition in objects is the key to reaching high modularity and loss of complexity in large scale designs. However, distributed memory parallelism tends to break modularity and encapsulation of concerns in OO languages, since a parallel computation cannot be encapsulated in an individual object. For reconciling object-orientation and distributed memory parallelism, we propose PObC++, a OO language that introduces innovative ideas for object-oriented parallel programming (OOPP).
The # model: separation of concerns for reconciling modularity, abstraction and efficiency in distributed parallel programming
Proceedings of ACM Symposium on Applied Computing (SAC'2005)
Special Track on Separation of Concerns (SoC)
The computer science community has been looking for parallel languages and models with a higher level of abstraction... more The computer science community has been looking for parallel languages and models with a higher level of abstraction and modularity, without performance penalties, that could be used in conjunction with advanced software engineering techniques, and that are suitable to work with large-scale programs. This paper discusses how the # parallel programming model addresses the issues of modularity and abstraction of parallel programs using the techniques of separation of concerns.
On the implementation of SPMD applications using Haskell#
Proceedings of the 15th Brazilian Symposium on Computer Architecture and High Performance Computing (SBAC-PAD'2003)
Commodities-built clusters, a low cost alternative for distributed parallel processing, brought high-performance... more Commodities-built clusters, a low cost alternative for distributed parallel processing, brought high-performance computing to a wide range of users. Most of them are interested in parallelising scientific applications. Message passing parallel programming using lower level mechanisms, such as MPI and PVM libraries, has become popular, because these tools are free, easy to obtain, and efficient. However, for large-scale applications, parallel software engineering using low level tools is a very hard task, due to its poor abstraction and modularity. This makes difficult the widespread use of cluster computing, by mathematicians, biologists, engineers, physicists, et al. Haskell# is an attempt to bring together higher-level parallel programming and cluster-based architectures, without sacrificing speedup and scalability. This paper compares speedup, scalability, and modularity of Haskell# and MPI implementations of some representative NAS benchmarks (EP, IS and CG).
5 views
Seen by:A High Performance Computing Platform for Component-Based Parallel Programming
I Worshop on Languages and Tools for Parallel and Distributed Programming (LTPD'2007)
Gramado, Brazil
Component-based programming has been applied to address the requirements of High Performance Computing (HPC)... more Component-based programming has been applied to address the requirements of High Performance Computing (HPC) applications. Due the poor support of parallelism on current infrastructures, the # component model and its based framework for parallel applications have been proposed, motivating the development of component based environments for parallel programming targeting high-end computing architecture.
Compositional Specification of Parallel Components Using Circus
Electronic Notes in Theoretical Computer Science
Volume 260, 1 January 2010, Pages 47–72
Proceedings of the 5th International Workshop on Formal Aspects of Component Software (FACS'2008)
The # (hash) component model aims to take advantage of a component-based perspective of software for the development... more The # (hash) component model aims to take advantage of a component-based perspective of software for the development of high-performance computing applications targeted at parallel distributed architectures. This paper presents an approach for specifying #-components using Circus, to provide the ability of reasoning about behavioral and functional properties of #-components and their composition, as well as to partially generate code of their units through the application of successive semi-automatic refinement steps. On the Circus side, the # component model provides a new compositional approach to combine a Circus specification to form new ones, widening its applicability.
Towards an architecture for component‐oriented parallel programming
Concurrency and Computation: Practice & Experience - Component and Framework Technology in High-Performance and Scientific Computing
Volume 19 Issue 5, April 2007
John Wiley and Sons Ltd. Chichester, UK
The # component model was proposed to meet the growing demands of new complex applications of science and engineering... more The # component model was proposed to meet the growing demands of new complex applications of science and engineering that require productive and efficient use of high-performance computing architectures. This paper presents the principles, intuition, and theories underlying the # component model, and the design of an architecture for programming frameworks that comply to the # component model.
Topological Skeletons in Haskell#
Proceedings of 2003 International Parallel and Distributed Processing Symposium (IPDPS'2003)
Skeletons is a powerful concept to describe patterns of concurrency in programming, abstracting from implementation.... more Skeletons is a powerful concept to describe patterns of concurrency in programming, abstracting from implementation. Haskell# is a coordination based distributed extension of Haskell. In this paper, it is shown how skeletons can be introduced into Haskell# at configuration level, by extending its notion of hierarchical composition of programs with process templates. The approach described herein is general enough to be applied to configuration languages in general. Its expressiveness, simplicity and elegance are demonstrated by examples, which also show its impact in Haskell# programming practice and performance.
Component-Based Refactoring of Parallel Numerical Simulation Programs: A Case Study on Component-Based Parallel Programming
23rd International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD'2011)
Component-based programming has been applied to address the requirements of large scale applications from sciences and... more Component-based programming has been applied to address the requirements of large scale applications from sciences and engineering with high performance computing (HPC) requirements. However, parallelism has been poorly supported in usual component infrastructures. This paper evidences the efficacy of an HPC platform of parallel components for development and execution of numerical simulation code,mostly found in these applications.
A categorical characterization for the compositional features of the # component model
ACM SIGSOFT Software Engineering Notes Homepage
Volume 31 Issue 2, March 2006
ACM New York, NY, USA
SAVCBS '05 (Proceedings of the 2005 conference on Specification and verification of component-based systems)
The # programming model attempts to address the needs of the high performance computing community for new paradigms... more The # programming model attempts to address the needs of the high performance computing community for new paradigms that reconcile efficiency, portability, abstraction and generality issues on parallel programming for high-end distributed architectures. This paper provides a semantics for the compositional features of # programs, based on category theory.
The# Model for Parallel Programming: From Processes To Components with Insignificant Performance Overheads
II Workshop on Components and Frameworks for High Performance Computing (CompFrame'2005)
The computer science community has claimed for parallel programming languages and models with a higher level of... more The computer science community has claimed for parallel programming languages and models with a higher level of abstraction and modularity, without performance penalties, that could be used in conjunction with advanced software engineering techniques, and that are suitable to deal with large-scale programs. This paper presents the # component model for parallel programming, intended to meet these issues.
Computação de Alto Desempenho em Plataforma Windows
Tutorial apresentado no SBPL'2007 (Simpósio Brasileiro de Linguagens de Programação), realizado na cidade de Natal, Brasil, a convite da Microsoft.
Nos últimos anos, a indústria do software tem abordado com ênfase o nicho de aplicações de computação de alto... more Nos últimos anos, a indústria do software tem abordado com ênfase o nicho de aplicações de computação de alto desempenho. Além de apresentar o contexto geral das tecnologias que hoje viabilizam estas aplicações, este tutorial focaliza as principais características do WCCS (Windows Compute Cluster Server), a versão do sistema operacional Windows voltado a clusters, em especial no que diz respeito ao desenvolvimento de aplicações que exploram o paralelismo inerente a estas arquiteturas.

