CASCH: A Software Tool for Automatic Parallelization and Scheduling of Programs on Message-Passing Multiprocessors
Ishfaq Ahmad,Yu-Kwong Kwok,Min-You Wu,Wei Shu
2000-01-01
IEEE Concurrency
Abstract:Existing parallel machines provide tremendous potential for high performance but their programming can be a cumbersome and error-prone process. This process is multi-phase in nature and consists of designing an appropriate parallel algorithm for the application at hand, implementing the algorithm by partitioning control and data, scheduling and mapping of the partitioned program onto the processors, orchestrating communication and synchronization, and identifying and interpreting various performance measures. A number of these phases, such as scheduling, mapping, communication, etc., can be very tedious if done manually, and thus should be done automatically. On the other hand, some of the more complex phases, such as parallelization, are better done semi-automatically. Software tools providing automatic functionalities free programmers from the nuisance of manual labor and can ensure better performance through code restructuring and optimization. This paper describes an experimental software tool called CASCH (Computer Aided SCHeduling) for parallelizing and scheduling applications on message-passing multiprocessors. CASCH transforms a sequential program to a parallel program with automatic scheduling, mapping, communication, and synchronization. The major strength of CASCH is its extensive library of scheduling and mapping algorithms representing a broad range of state-of-the-art work reported in the recent literature. These algorithms can be interactively analyzed, tested and compared using real data on a common platform with various performance objectives, enabling the programmer to select the most suitable algorithm for the application. CASCH with its graphical interface can be auspicious for both naive and expert programmers of parallel machines, and can also serve as a teaching and learning aid for understanding scheduling and mapping algorithms.