
In section 4, the implementation of the integrated
development environment is presented. In section 5,
we introduce a three-dimensional program for the
simulation of laser plasma intersections, which is
developed on IDE-JASMIN.
2 DESIGN GOALS
To support rapid design and implementation of
parallel numerical applications on JASMIN, IDE-
JASMIN is designed as a visual programming
environment and provides a rapid programming
approach based on component configuration and
assembling techniques. It is designed with the
following features:
Easy development of parallel numerical
applications for domain experts by configuring and
assembling parallel integrator components. Users
break down their complex algorithms into smaller
and manageable parts, configure and assemble
corresponding integrator components through
intuitive GUI, without worrying about parallel
computing details.
Easy creation and reuse of configured integrator
components. Users only need to create an
integrator component from an appropriate
component model and use it throughout the
application.
Powerful code generation to generate tedious part
application code and free users from unnecessary
exposure to complex features of C++ language. All
C++ part as well as numerical kernel interfaces are
automatically generated, users only need to write
simple numerical kernels in FORTRAN 90
language.
Versatile tools to facilitate the whole application
development. IDE-JASMIN integrates FORTRAN
editing, code compiling and debugging, parallel
execution as well as visualized data analysis
features into a single system.
3 DESIGN FEATURES
IDE-JASMIN is an integrated development
environment tailored to the needs of high
performance numerical application developers. The
IDE provides a wide variety of component models to
describe a computational process and enable users to
build their numerical applications by assembling
these components. In the following subsections we
introduce our component models and
component-assembling approach.
3.1 Parallel Integrator Component
Model
Parallel integrator components are proposed in
JASMIN to encapsulate parallel computing details
on patch-based data structure for structured mesh
applications (Mo, 2009). These components cover a
wide range of parallel computing patterns including
communication and numerical computing. Users
have to subclass in C++ language the
algs::StandardComponentPatchStrategy strategy
class and implement several abstract interfaces. In
these interfaces, users have to manually fetch data
fields via Patch object and pass them to numerical
kernel often written in FORTRAN language. This
approach involves tedious amount of coding and
often error-prone for domain experts, who usually
are not familiar with complex object-oriented C++
language.
IDE-JASMIN encapsulates JASMIN parallel
integrator component models as configurable user
interface elements. Some frequently used
components are listed below:
InitializeIntegratorComonent: initialize variables
NumericalIntegratorComponent: execute
numerical algorithms on specified variables
DtIntegratorComponent: compute time step value
MemoryIntegratorComponent: explicit allocate
and deallocate memory for variables
CopyIntegratorComponent: copy values between
variables
ParticleCommComponent: communicate data in
particle simulations
In IDE-JASMIN, we provide several types of GUI
for configuration of these component models. For
example, we provide a communication configuration
GUI where user can select which variables shall be
communicated and how to communicate. We also
provide a computation GUI where user can define
numerical kernel interfaces and select which
variables shall be passed to the kernel. When
configuring integrator component models using our
GUI, users do not have to write any code hence
knowledge of C++ language is not required.
In fact, creating and using a parallel integrator
component in IDE-JASMIN needs only three simple
steps:
1. Select an appropriate component model
2. Configure necessary attributes of the component
3. If necessary, define numerical kernel interface
and set variables to pass to the kernel.
IDE-JASMIN-AnInteractiveGraphicalApproachforParallelProgramminginScientificComputing
329