Report of First Meeting of Java Grande
Forum
Further Links:
What is Java Grande?
This is use of Java for:
-
High Performance Network Computing
-
Scientific and Engineering Computation
-
(Distributed) Modeling and Simulation
-
Parallel and Distributed Computing
-
Data Intensive Computing
-
Communication and Computing Intensive Commercial and Academic
Applications
-
HPCC
-
Computational Grids ........
What is Goal of Java Grande Forum?
-
Java has potential to be a better environment for "Grande
application development" than any previous languages such as Fortran and
C++
-
The Forum Goal is to develop community consensus and recommendations
for either changes to Java or establishment of standards (frameworks) for
"Grande" libraries and services
-
These Language changes or frameworks are designed to realize
"best ever Grande programming environment"
What are Initial Issues Identified for Java Grande Forum? An initial
study was performed by two separate working groups
Numerics Working Group:
(Roldan Pozo and Ron Boisvert reporting)
There are More Details here
Summary of Issues
-
floating point issues
-
exact bits
-
rounding
-
looseNumerics as discussed by Gosling
-
exception flags
-
exception traps
-
NaNs, Infinities
-
interval arithmetic
-
extended precision
-
complex numbers
-
operator overloading
-
templates (inlining, parameterized class types)
-
arrays
-
multidimensional (continguous) storage
-
long integer indices
-
standard classes (e.g. FortranArray3D)
-
subarrays without copying
-
resizing and composing of arrays
-
array expressions (: notation of f90, matlab)
-
aliasing
-
Java numerical library interfaces (APIs)
-
standard vector, matrix classes (e.g. SymmetricPackedDouble )(?)
-
numeric (programming) exceptions (e.g. nonconforming arrays)
-
Java libraries
-
numerics
-
MPI
-
applcation-specific
-
interfaces to legacy and native methods
-
Lapack, BLAS, etc.
-
standardized schemes for f77 bindings
-
standard APIs for numeric classes (e.g. FortranArray3D)
-
Tool interfaces
-
monitors
-
debuggers
-
visualizations
-
JVM and runtime issues
-
Garbage Collection, threads
-
JVM opcode extensions
-
Java compiler optimizations
-
JIT optimizations
-
Inhibitors of compiler optimizations include:
-
Memory Hierarchy (fpu/register/cache/main/disk)
-
Interaction with Garbage Collection
-
Thread memory model
-
Weak consistency of shared variables
-
Implicit shared variables
-
Exception handling
-
FP no intermediate results rules
-
Scalability issues:
-
The VM itself
-
Thread creation, destruction and synchronization; Non-queued notifies
Parallel and Distributed Computing Working Group
(Denis Caromel and George Thiruvathukal reporting)
There are More Details here
Subjects of top importance:
-
RMI
-
VM Specification and Implementation
-
High-Level parallel, distributed models, and Libraries (SPMD, Active Objects,
MIMD, etc. )
-
Interfaces to other HPC Services (e.g. Meta-computing)
-
Components architectures for scientific Computing
-
Benchmarking
Order of priority:
1. RMI and VM
2. High-Level Lib. and Interfaces to HPC Services
3. Components
while Benchmarking is pervasive to all areas
Some details on the two most important topics:
RMI Details:
-
Data serialization / Serialization supports, access, and openness
-
Allow the writting of specific algorithms for (un)marshalling, and the
use of specific transport mechanisms.
-
Invocations efficiency
-
Different transport mechanisms
-
Multicast actual implementation, and openness of the implementation
-
Do we need asynchronous calls within RMI ?
-
Is the single inheritance a limitation to RMI? and is there a way around
it?
VM Details:
-
Fast synchronization Mechanisms
-
Scalability of Threads
-
Multi-programming (and Multi-user ?) VM
-
Awkward memory model for thread (simplification) (?)
-
class unloading of VM (for long living VM)
-
Meta-object (extension to reflection support) (?)
-
Robustness of VM (long living)