Clusters of workstations provide a cost-effective, high per- formance parallel computing environment. These environ- ments, however, are often shared by multiple users, or may consist of heterogeneous machines. As a result, parallel ap- plications executing in these environments must operate de- spite unequal computational resources. For maximum perfor- mance, applications should automatically adapt execution to maximize use of the available resources. Ideally, this adap- tation should be transparent to the application programmer In this paper, we present CRAUL (Compiler and Run-Time Integratjon for Adaptation Under Load), a system that dy- namically balances computational load in a parallel applica- tion. Our target run-time is software-based distributed shared memory (SDSM). SDSM is a good target for parallelizing compilers since it reduces compile-time complexity by pro- viding data caching and other support for dynamic load bal- ancing. CRAUL combines compile-time support to identify data access patterns with a run-time system that uses the ac- cess information to intelligently distribute the parallel work- load in loop-based programs. The distribution is chosen ac- cording to the relative power of the processors and so as to minimize SDSM overhead and maximize locality. We have evaluated the resulting load distribution in the presence of different types of load - computational, computational and memory intensive, and network load. CRAUL performs within 523 of ideal in the presence of load, and is able to improve on naive compiler-based work distribution that does not
展开▼