Second Foil -- work done on HPF for TLNS3D
-
There is multigrid in the original code and the structure of the code is such that at the top level of the program the arrays are one dimensional and at the lower level the 1D array was changed to 3D using pointers. Although the HPF language allows for this using (REDISTRIBUTE, defined types, etc.) the current compilers do not support this. Thus the arrays had to mad multi-dimensional on all levels and the sizes hard-wired.
-
The data decomposition that I am testing is where each processor has all the data of one block: i.e. 2 block case is done using 2 processors, 4 blocks - 4 processors....
-
The Convective Flux Sub. had to be restructured so that the compiler could analyze the code correctly/efficiently.
-
Scalar Expansion was done with all compilers except APR's which was tedious and required more memory. Note that with this data distribution this sub. was ~embarassingly parallel.
-
The Block Boundary Transfer Subroutine also required restructuring of the do loops and conditionals b/c to simplify compiler runtime analysis (before I was getting broadcast where there shouldn't be).
-
Other Data Decomp. : each block on all processors (the arrays are of dimensions (i,j,k) and the 1st dimension, i, is distributed among the processors) was done prior to my arrival. Although the flux subroutine returned respectable speedups the boundary transfer sub. did not b/c the exchange of information can be none to very complex.
-
future plans: Each block will be distributed amoung a subset of processors. We are currently testing this idea now but have no results to show at this time.
|