... macros1
Of course we could run a preprocessor over Java, but this is not a natural procedure in existing Java environments
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... methods2
For earlier work on interfacing Java to PVM see http://www.isye.gatech.edu/chmsr/JavaPVM/ and http://www.cs.virginia.edu/ãjfzj/jpvm.html
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Solaris3
Interfacing Java to MPICH/P4 was not straightforward, due to unpleasant interactions between the Java run-time and the underlying P4 implementation. For example, standard implementations of both use the UNIX SIGALRM signal. We found it necessary to patch the MPICH 1.0.13 release to work round these incompatibilities. The necessary patches are available from us on request.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... section4
MPI afficionados will note that the use of standard mode send is ``unsafe'', and could deadlock if the system does not provide enough buffering. The same remark could be made about the socket-based version
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... message5
This offset is in units of the buf array element--or the base type of datatype--not of any compound type. The Object $+$ offset presentation is reminiscent of the interface of the arrayCopy utility in the standard Java API.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... \ldots)6
Perhaps a good compromise is to provide one container class for each primitive type and one for Object.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... type7
Confusingly enough, this makes our Array more akin to an HPF template than an HPF array. Needless to say, there is no connection between C++ templates and HPF templates.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... class8
This approach is modelled on the Thread and Applet classes in the standard Java API. Other approaches to providing library-wide resources were illustrated in earlier sections.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... values9
Here we will use whole arrays of neighbours and a shift operation. This is arguably the more conventional approach in a data-parallel setting, but the the ghost-edge mechanism can also be fitted into this framework.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... class10
Our Array class is perched somewhere between STL container and iterator classes. This is a slightly awkward position, and it may be more satifactory to separate these functions into different classes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.