challenges need to be addressed in the software
architecture and software development process. A
Four-phases-twelve-nodes process for the
development of new software module in JASMIN is
described. It has been proved that the software
development process is very useful to enhance the
quality of JASMIN.
2 OVERVIEW OF JASMIN
2.1 Design Objectives
The programming challenges mainly arise from two
types of increasing complexity. The first is the
computer architecture. The memory wall is still the
key bottleneck for realistic performance; the
increasing number of cores in each CPU increases
the seriousness of this bottleneck. The data
structures should be matched to a cached-based
memory hierarchy. However, aggregation
techniques are indispensable for the construction of
computers. More and more cores are integrated into
each CPU, and more and more CPUs are clustered
into each computing node, and hundreds or
thousands of nodes are interconnected. Parallel
algorithms should have sufficient parallelism to
utilize so many cores. The design of such data
structures and parallel algorithms are too
professional for the application users.
The second complexity is the application system.
Large scale simulations are mainly used to study the
characteristics of complex systems. With the
increasing of computer capabilities, the complexity
of the application system should also increase
simultaneously. However, the increasing complexity
brings many new problems. Firstly, the fast parallel
algorithms are usually required for the solution of
large scale discrete systems. Though many such
algorithms have been studied, they are seldom
mature enough for realistic applications. Secondly,
the dynamic variations of physical characteristics
often lead to serious load imbalance, challenging the
parallel efficiency across thousands of processors.
Thirdly, complex systems are often coupled with
many small systems and such tight coupling often
leads to irregular communication issues. The fast
parallel algorithms, load balancing strategies and
irregular communications together increase the
difficulty of programming for such systems.
JASMIN infrastructures(MO, 2009) are designed
toward solving such challenges. The main objective
of JASMIN is to accelerate the development of
parallel program for large scale simulations of
complex applications on parallel computers. The
basic ideas described as following:
Hides parallel programming using millons of
cores and the hierarchy of parallel computers.
Integrates the efficient implementations of
parallel fast numerical algorithms.
Provides efficient data structures and solver
libraries.
Supports software engineering for code
extensibility.
2.2 Software Architecture
Figure 1 depicts the three layers architecture of
JASMIN. The bottom layer mainly consists of
modules for high performance computing for
SAMR meshes.In this layer, modules are grouped
into three sub-layers. The base sub-layer, Toolbox,
contains the essential C++ classes for parameter
input, memory management, restarting, and input/
output interfaces with the HDF5. The second sub-
layer contains two modules, Patch Hierarchy and
Patch Data, for data structures and one module,
Communications, for communication and load
balancing strategies. The top sub-layer, Mesh
adaptivity, contains the components for the local
mesh refinement or coarsening.
Figure 1: Software architecture of JASMIN.
The middle layer of JASMIN contains the
modules for the numerical algorithms shared by
many applications including computational
geometry, fast solvers, mathematical operations on
matrix and vectors, time integration schemes,
toolkits, and so on.
The top layer is a virtual layer consisting of C++
interfaces for parallel programming. On the top of
this layer, users can write serial numerical
subroutines for physical models, parameters, discrete
ICSOFT-EA2014-9thInternationalConferenceonSoftwareEngineeringandApplications
440