1 |
Define a "clean" model for machine architecture
-
Memory hierarchy including caches and geomterical (distributed) effects
|
2 |
Define a low level "Program Execution Model" (PEM) which allows one to describe movement of information and computation in the machine
-
This can be thought of as "MPI"/assembly language of the machine
|
3 |
On top of low level PEM, one can build an hierarchical (layered) software model
-
At the top of this layered software model, one finds objects or Problem Solving Environments (PSE's)
-
At an intermediate level there is Parallel C C++ or Fortran
|
4 |
One can program at each layer of the software and augment it by "escaping" to a lower level to improve performance
-
Directives (HPF assertions) and explicit insertion of lower level code (HPF extrinsics) are possible
|