
 
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