The
Exemplar programming model provides three perspectives from which
a programmer can write (or adapt) code to run on an Exemplar system.
Those perspectives are the shared-memory, message-passing, and shared-memory/message-passing
hybrid paradigms. This book focuses on using the shared-memory paradigm
but also provides some information on the other two paradigms.
The shared-memory paradigm |
 |
In
the shared-memory paradigm, the compilers handle optimizations,
and, if requested, parallelization. Numerous compiler directives
and pragmas (discussed in detail in Chapter 4, "Chapter 4 “Basic shared-memory
programming”," and Chapter
5, "Chapter 5 “Memory classes”,"
and listed in Appendix B “Exemplar compiler
directives
and pragmas”) are
available to further increase optimization opportunities.
Chapter 4, "Chapter 4 “Basic shared-memory
programming”,"
and Chapter 6, "Chapter 6 “Advanced shared-memory programming”,"
cover shared-memory programming in detail.
The message-passing paradigm |
 |
Hewlett Packard has implemented a version of the MPI standard
known as HP MPI. This version is finely tuned for HP technical
servers.
Under the message-passing paradigm, the programmer uses functions
to explicitly spawn parallel processes, share data among them, and
coordinate their activities. There is no shared memory; each process
has its own private 16-terabyte (Tbyte) address space, and any data
that must be shared must be explicitly passed between processes.
Support of message passing allows programs written under this
paradigm for distributed-memory machines to be easily ported to
HP servers. Programmers familiar with message passing may choose
to write new programs using this paradigm rather than shared memory
and can realize a substantial performance boost over conventional
message-passing machines, even when coding finer-grained parallelism.
The few programs that require more per-process memory than possible
using shared memory will benefit from the manually-tuned message-passing
style.
For more information, see Chapter 7, "Chapter 7 “Message-passing
programming”" or the book
HP MPI User's Guide.
Message-passing/shared-memory hybrids |
 |
Some
programs may benefit from combining the paradigms to allow several
shared-memory processes to coordinate their activities via message
passing. This model allows the majority of the program to be written
in the familiar shared-memory style while exploiting the process-private
memory benefits of message passing.