957 research outputs found
Distributed computing practice for large-scale science and engineering applications
It is generally accepted that the ability to develop large-scale distributed applications has lagged seriously behind other developments in cyberinfrastructure. In this paper, we provide insight into how such applications have been developed and an understanding of why developing applications for distributed infrastructure is hard. Our approach is unique in the sense that it is centered around half a dozen existing scientific applications; we posit that these scientific applications are representative of the characteristics, requirements, as well as the challenges of the bulk of current distributed applications on production cyberinfrastructure (such as the US TeraGrid). We provide a novel and comprehensive analysis of such distributed scientific applications. Specifically, we survey existing models and methods for large-scale distributed applications and identify commonalities, recurring structures, patterns and abstractions. We find that there are many ad hoc solutions employed to develop and execute distributed applications, which result in a lack of generality and the inability of distributed applications to be extensible and independent of infrastructure details. In our analysis, we introduce the notion of application vectors: a novel way of understanding the structure of distributed applications. Important contributions of this paper include identifying patterns that are derived from a wide range of real distributed applications, as well as an integrated approach to analyzing applications, programming systems and patterns, resulting in the ability to provide a critical assessment of the current practice of developing, deploying and executing distributed applications. Gaps and omissions in the state of the art are identified, and directions for future research are outlined
PySke: Algorithmic Skeletons for Python
International audiencePySke is a library of parallel algorithmic skeletons in Python designed for list and tree data structures. Such algorithmic skeletons are high-order functions implemented in parallel. An application developed with PySke is a composition of skeletons. To ease the write of parallel programs, PySke does not follow the Single Program Multiple Data (SPMD) paradigm but offers a global view of parallel programs to users. This approach aims at writing scalable programs easily. In addition to the library, we present experiments performed on a high-performance computing cluster (distributed memory) on a set of example applications developed with PySke
WuYun: Exploring hierarchical skeleton-guided melody generation using knowledge-enhanced deep learning
Although deep learning has revolutionized music generation, existing methods
for structured melody generation follow an end-to-end left-to-right
note-by-note generative paradigm and treat each note equally. Here, we present
WuYun, a knowledge-enhanced deep learning architecture for improving the
structure of generated melodies, which first generates the most structurally
important notes to construct a melodic skeleton and subsequently infills it
with dynamically decorative notes into a full-fledged melody. Specifically, we
use music domain knowledge to extract melodic skeletons and employ sequence
learning to reconstruct them, which serve as additional knowledge to provide
auxiliary guidance for the melody generation process. We demonstrate that WuYun
can generate melodies with better long-term structure and musicality and
outperforms other state-of-the-art methods by 0.51 on average on all subjective
evaluation metrics. Our study provides a multidisciplinary lens to design
melodic hierarchical structures and bridge the gap between data-driven and
knowledge-based approaches for numerous music generation tasks
RibSeg v2: A Large-scale Benchmark for Rib Labeling and Anatomical Centerline Extraction
Automatic rib labeling and anatomical centerline extraction are common
prerequisites for various clinical applications. Prior studies either use
in-house datasets that are inaccessible to communities, or focus on rib
segmentation that neglects the clinical significance of rib labeling. To
address these issues, we extend our prior dataset (RibSeg) on the binary rib
segmentation task to a comprehensive benchmark, named RibSeg v2, with 660 CT
scans (15,466 individual ribs in total) and annotations manually inspected by
experts for rib labeling and anatomical centerline extraction. Based on the
RibSeg v2, we develop a pipeline including deep learning-based methods for rib
labeling, and a skeletonization-based method for centerline extraction. To
improve computational efficiency, we propose a sparse point cloud
representation of CT scans and compare it with standard dense voxel grids.
Moreover, we design and analyze evaluation metrics to address the key
challenges of each task. Our dataset, code, and model are available online to
facilitate open research at https://github.com/M3DV/RibSegComment: 10 pages, 6 figures, journa
Toward optimised skeletons for heterogeneous parallel architecture with performance cost model
High performance architectures are increasingly heterogeneous with shared and
distributed memory components, and accelerators like GPUs. Programming such
architectures is complicated and performance portability is a major issue as the
architectures evolve. This thesis explores the potential for algorithmic skeletons
integrating a dynamically parametrised static cost model, to deliver portable
performance for mostly regular data parallel programs on heterogeneous archi-
tectures.
The rst contribution of this thesis is to address the challenges of program-
ming heterogeneous architectures by providing two skeleton-based programming
libraries: i.e. HWSkel for heterogeneous multicore clusters and GPU-HWSkel
that enables GPUs to be exploited as general purpose multi-processor devices.
Both libraries provide heterogeneous data parallel algorithmic skeletons including
hMap, hMapAll, hReduce, hMapReduce, and hMapReduceAll.
The second contribution is the development of cost models for workload dis-
tribution. First, we construct an architectural cost model (CM1) to optimise
overall processing time for HWSkel heterogeneous skeletons on a heterogeneous
system composed of networks of arbitrary numbers of nodes, each with an ar-
bitrary number of cores sharing arbitrary amounts of memory. The cost model
characterises the components of the architecture by the number of cores, clock
speed, and crucially the size of the L2 cache. Second, we extend the HWSkel cost
model (CM1) to account for GPU performance. The extended cost model (CM2)
is used in the GPU-HWSkel library to automatically nd a good distribution
for both a single heterogeneous multicore/GPU node, and clusters of heteroge-
neous multicore/GPU nodes. Experiments are carried out on three heterogeneous
multicore clusters, four heterogeneous multicore/GPU clusters, and three single
heterogeneous multicore/GPU nodes. The results of experimental evaluations for
four data parallel benchmarks, i.e. sumEuler, Image matching, Fibonacci, and
Matrix Multiplication, show that our combined heterogeneous skeletons and cost
models can make good use of resources in heterogeneous systems. Moreover using
cores together with a GPU in the same host can deliver good performance either
on a single node or on multiple node architectures
Tools and models for high level parallel and Grid programming
When algorithmic skeletons were first introduced by Cole in
late 1980 (50) the idea had an almost immediate success. The
skeletal approach has been proved to be effective when application algorithms can be expressed in terms of skeletons composition. However, despite both their effectiveness and the progress made in skeletal systems design and implementation, algorithmic skeletons remain absent from mainstream practice. Cole and other researchers, respectively in (51) and (19), focused the problem. They recognized the issues affecting
skeletal systems and stated a set of principles that have
to be tackled in order to make them more effective and to
take skeletal programming into the parallel mainstream. In
this thesis we propose tools and models for addressing some
among the skeletal programming environments issues. We
describe three novel approaches aimed at enhancing skeletons
based systems from different angles. First, we present a model we conceived that allows algorithmic skeletons customization exploiting the macro data-flow abstraction. Then we present two results about the exploitation of metaprogramming techniques for the run-time generation and optimization of macro data-flow graphs. In particular, we show how to generate and how to optimize macro data-flow graphs accordingly both to programmers provided non-functional requirements and to execution platform features. The last result we present are the Behavioural Skeletons, an approach aimed at addressing the limitations of skeletal programming environments when used for the development of component-based Grid applications.
We validated all the approaches conducting several test,
performed exploiting a set of tools we developed
- …