The influence of topography and ambient stability on the characteristics of cold‐air pools: a numerical investigation.
Accepted in Journal of Applied Meteorology and Climatology, 2012
A high-resolution numerical investigation of a cold-air pooling process (under quiescent conditions) is carried out... more A high-resolution numerical investigation of a cold-air pooling process (under quiescent conditions) is carried out systematically highlighting the relations between the characteristics of the cold air pools (e.g., slope winds, vertical temperature and wind structure, and cooling rate) and the characteristics of the topography (e.g., basin size and slope angle) under different ambient stabilities. The Advanced Regional Prediction System (ARPS) model is used to simulate 40 different scenarios at 100 m (10 m) horizontal (vertical) resolution. Results are within the range of similar observed phenomena. The main physical process governing the cooling process near the basin floor (< 200 m in height) was found to be longwave radiative flux divergence, while vertical advection of temperature dominated the cooling process for the upper basin areas. The maximum down-slope wind speed is linearly correlated to both basin size and slope angle, with stronger wind corresponding to larger basin and lower slope angle. As the basin size increases, the influence of slope angle on maximum down-slope wind decreases and the maximum is located further down the slope. These relationships do not appear to be sensitive to stability, but weaker stability produces more cooling in the basin atmosphere by allowing stronger rising motion and adiabatic cooling. Insight gained from this study helps improve our understanding of the cold-air pooling process within the investigated settings.
Long-range transport of terrain-induced turbulence from high-resolution numerical simulations
Over complex terrain, an important question is how various topographic features may generate or alter wind turbulence... more Over complex terrain, an important question is how various topographic features may generate or alter wind turbulence and how far the influence can be extended downstream. Current measurement technology limits the capability in providing a long-range snapshot of turbulence as atmospheric eddies travel over terrain, interact with each other, change their productive and dissipative properties, and are then observed tens of kilometers downstream of their source.In this study, we investigate through high-resolutionnumerical simulations the atmospheric transport of terrain-generated turbulence in an atmosphere that is neutrally stratified. The simulations are two-dimensional with an isotropic spatial resolution of 15 m and run to a quasi-steady state. They are designed in such a way to allow an examination of the effects of a bell-shaped experimental hill with varying height and aspect ratio on turbulence properties generated by another hill 20 km upstream. Averaged fields of the turbulent kinetic energy (TKE) implythat terrain could have a large influence on velocity perturbations at least 30 H (H is the terrain height) upstream and downstream of the terrain, with the largest effect happening in the area of the largest pressure perturbations. The results also show that downstream of the terrain the TKE fields are sensitive to the terrain's aspect ratio with larger enhancement in turbulence by higher aspect ratio, while upstream there is a suppression of turbulence that does not appear to be sensitive to the terrain aspect ratio. Instantaneous vorticity fields shows very detailed flow structures that resemble a multitude of eddy scales dynamically interacting while shearing oppositely paired vortices. The knowledge of the turbulence production and modifications by topography from these high-resolutionsimulationscan be helpful in understanding long-range terrain-induced turbulence and improving turbulence parameterizations used in lower resolution weather prediction models.
A Hybrid Local Storage Transfer Scheme for Live Migration of I/O Intensive Workloads
published in "HPDC'12: The 21st International ACM Symposium on High-Performance Parallel and Distributed Computing", 2012.
Live migration of virtual machines (VMs) is key feature of virtualization that is extensively leveraged in IaaS cloud... more Live migration of virtual machines (VMs) is key feature of virtualization that is extensively leveraged in IaaS cloud environments: it is the basic building block of several important features, such as load balancing, pro-active fault tolerance, power management, online maintenance, etc. While most live migration efforts concentrate on how to transfer the memory from source to destination during the migration process, comparatively little attention has been devoted to the transfer of storage. This problem is gaining increasing importance: due to performance reasons, virtual machines that run large-scale, data-intensive applications tend to rely on local storage, which poses a difficult challenge on live migration: it needs to handle storage transfer in addition to memory transfer. This paper proposes a memory migration independent approach that addresses this challenge. It relies on a hybrid active push / prioritized prefetch strategy, which makes it highly resilient to rapid changes of disk state exhibited by I/O intensive workloads. At the same time, it is minimally intrusive in order to ensure a maximum of portability with a wide range of hypervisors. Large scale experiments that involve multiple simultaneous migrations of both synthetic benchmarks and a real scientific application show improvements of up to 10x faster migration time, 10x less bandwidth consumption and 8x less performance degradation over state-of art.
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.
16 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.

