Model-driven Engineering of Scientific Applications

 

Model-driven Engineering of Scientific Applications

Developing complex scientific applications that can process big datasets requires effective utilization of the computational power of the existing platforms including grids, clouds, clusters, multi-core and many-core processors, and graphical processing units (GPUs). However, scientists who need to leverage such platforms are not parallel or distributed programming experts. Thus, they face numerous challenges in conducting their experiments on such platforms including lack abstract domain-oriented tools, lack of a common parallel programming model, and unsuitable development environments. In this research, we introduce a novel, multi-level abstraction approach supported with a toolset that helps in engineering scientific applications. In our approach we capture and link problem model, data model, parallel program model, and deployment model.

Contact

 malmorsy at swin dot edu dot au

Aspects captured by our MDE approach to parallelize programs

 (+61 3) 9214 5725 

Office Location

EN511c

Engineering Building

EN Building - 5th Floor

John Street, Hawthorn

Victoria 3122

View map

Postal Address

Swinburne University of Technology 

Faculty of Information and 

Communication Technologies 

PO Box 218 

Hawthorn, Victoria

Australia 3122 

Our approach is based on providing an extensible set of domain-specific visual languages to help in modelling program structure and input dataset structure. Our approach has two more DSVLs to develop parallelization plans, and deployment details. The approach is supported by a web-based designer tool including code generation, code editing, reverse engineering, pattern reuse. These sets of predominantly visual languages support capturing descriptions of the sequential program, parallelization specification details, and deployment details – i.e. it captures what code blocks to parallelize and how such blocks could be parallelized using available computational resources. These steps are language independent – i.e. regardless of the programming language used in developing the program. Such program details are used to guide the generation of the corresponding parallel programs using necessary parallel programming models that uses parallel and distributed programming models (MPI, OpenCL, or OpenMP) as needed. Programmers/scientists do not need to have experience with parallel patterns and heterogeneous computing platforms. Moreover, our approach saves efforts required to study implications of changing program deployment specifications, or rewriting programs when migrating from one platform to another. Thus, programmers/scientists can write a program, model its parallel and deployment aspects, and then get it to run on different computing platforms either single core, multi-core, many-core, or hardware accelerators by updating program deployment details. 

High-level architecture of our MDE for parallel programming

Snapshot of matrix multiplication parallel model

Snapshot of N-body simulation models developed by our tool

Publications