There is substantial interest in exploring techniques to take advantage of advanced computer architectures which are expected to stress parallel processing to an ever greater degree. One aspect of parallel processing that holds great promise as a means of speeding up calculations, is the breaking down of computational tasks into independent sections so that several can be executed simultaneously on multiple processors.To date. the main approach for exploiting this type of parallelism (also termed "multitasking" and "multiprocessing") has centered on manual intervention in the computer code to restructure parallelism into an application (e.g., Cera, 1989). This requires considerable analysis and often requires the complete rewriting of existing application programs. Some thought is also being given to the strategy of developing algorithms which can analyze particular classes of applications for exploiting parallelism (e.g., Chiniowitz and Bielinis, 1987). Both of these approaches, of course, hold promise but suffer from the disadvantage of considerable development cost for each application or class of applications. Also, development efforts for applications computed on one set of computer hardware are not likely to result in code that is portable to a different manufacturer's computer hardware.
Procedure and ResultsAs an alternative to the above methods, another approach is investigated here. The strategy is to take advantage of a class of utility programs being developed by several sources, that modify code automatically to take advantage of the parallel architecture available in a particular piece of computer hardware. This approach does not require any code intervention and would let one take immediate advantage of advanced computer architectures with existing code.Some experiments have been accomplished using the sequential modular Rowsheet simulator FLOWTRAN (Rosen and Pauls. 1977). The flowsheet simulator processes the user's flowsheet description into a FORTRAN program, which is then executed for a solution to the user's stated problem. For this study, a code analyzing utility program (CFT77 Reference Manual, 1988) was applied to the generated FORTRAN program before execution. The utility modified the FORTRAN code such that directives were inserted automatically at appropriate places to cause portions of the code to execute in parallel. The code was then executed on a two-processor machine, the Cray XMP/24. Performance statistics were collected for four different but typical flowsheet simulation problems.The results shown in Table 1 indicate that large fractions of the code were converted for parallel processing. In the best case, 96% of the code after conversion can run in a parallel mode. This means that only 4% of the computation time for this particular test case need be spent in sequential calculations. The maximum speed-up that can be achieved due to executing a stated fraction of the code in parallel can be readily calculated by applying Amdahl's Law (Amdahl, 1967) indicated as Eq. 1 below:P maximum...