CS 6404
Global Arrays Presentation
by
Olivier Marchand
and
Utku Moral
Global Arrays (GA) is a portable "shared memory" programming model for distributed memory computers. GA combines the features of message-passing and shared-memory, leading to simple coding and efficient execution. The matrices are physically distributed among the processors, but there is no need of explicit cooperation among the processes. Each process can asynchronously, independently, access logical blocks of the matrices.
Where is it developed?
GA is a research project at the Pacific Northwest Laboratory. This is part of the Grand Challenge Applications project, the goal of the GA project being to permit exploiting teraflops machines for computational chemistry.
On which platforms is it available?
GA currently supports the following platforms:
- -Distributed memory:
IBM SP 1/2, Intel iPSC, Delta, Paragon, Cray 3D
- -Shared memory NUMA:
KSR-1/2, CONVEX SPP-1
- -Network of UNIX workstations
- -Uni- and multi-processor workstations
- -Personal computers running Linux
GA and message passing
GA developers claim that GA currently supports two message-passing interfaces, TCGMSG and MPI. However, they also specify that MPI is still under development, therefore TCGMSG remains the "default" library that comes with the GA package. From our experiments, it appears that MPI is not yet fully supported...
GA and visualization
A visualization tool has been promised... but is not available on the Paragon yet.
Our experiments
We used the Intel Paragon of the Computer Science department at Virginia tech (sioux or omaha). This Paragon has 28 computes nodes, and 2 service nodes. Each compute node is made of one or more I860 processors with 16 MB memory.
We analyzed the data partitioning, and used a matrix transpose multiplication to evaluate GA performances.
We also solved the same problem, just using the nx message-passing library on the paragon.
Conclusion
Global arrays using a "shared memory paradigm", it makes it easier to program than standard message-passing libraries. The user can write an application without knowing where the data are located. However, this may not be the most efficient solution...
Besides, the current partitioning algorithm seems to be primitive.
Performances seem to be good, but did not improve when we increased the number of nodes. We still have to investigate on that...