\chapcontents {1}{Writing Parallel Programs in GAP Easily}{5} \seccontents {1.1}{Overview of ParGAP} {5} \seccontents {1.2}{Installing ParGAP} {7} \seccontents {1.3}{Running ParGAP} {8} \seccontents {1.4}{Extended Example} {9} \seccontents {1.5}{Author} {13} \seccontents {1.6}{Invoking ParGAP with Remote Slaves} {13} \seccontents {1.7}{Problems with Installation} {14} \seccontents {1.8}{Problems with Hosts on Multiple Networks} {16} \seccontents {1.9}{Problems with Passwords (Getting Around Security)} {16} \seccontents {1.10}{Modifying the GAP kernel} {17} \chapcontents {2}{Slave Listener}{18} \seccontents {2.1}{Slave Listener Commands} {18} \chapcontents {3}{Basic Concepts for the TOP-C model (MasterSlave)}{22} \seccontents {3.1}{Basic TOP-C (Master-Slave) commands} {22} \seccontents {3.2}{Other TOP-C Commands} {23} \seccontents {3.3}{Simple Usage of MasterSlave()} {25} \seccontents {3.4}{Efficient Parallelism in MasterSlave() using CheckTaskResult()} {25} \seccontents {3.5}{Modifying Task Output or Input (a dirty trick)} {26} \seccontents {3.6}{The GOTO statement of the TOP-C model} {27} \seccontents {3.7}{Being nice to other users (Nice, Alarm and LimitRss)} {27} \seccontents {3.8}{Converting legacy sequential code to the TOP-C model} {28} \chapcontents {4}{Tutorial}{29} \seccontents {4.1}{Trivial Parallelism} {29} \seccontents {4.2}{Using ParGAP interactively} {30} \seccontents {4.3}{Streaming} {32} \seccontents {4.4}{TOP-C model for non-trivial parallelism} {33} \chapcontents {5}{MasterSlave Tutorial}{36} \seccontents {5.1}{A simple example} {36} \seccontents {5.2}{ParSquare} {37} \seccontents {5.3}{ParInstallTOPCGlobalFunction() and TaskInputIterator() (ParSquare revisited)} {37} \seccontents {5.4}{ParMultMat} {38} \seccontents {5.5}{DefaultCheckTaskResult (as illustrated by ParSemiEchelonMatrix)} {39} \seccontents {5.6}{Caching slave task outputs (ParSemiEchelonMat revisited)} {42} \seccontents {5.7}{Agglomerating tasks for efficiency (ParSemiEchelonMat revisited again)} {43} \seccontents {5.8}{Raw MasterSlave (ParMultMat revisited)} {46} \chapcontents {6}{Advanced Concepts for TOP-C model (MasterSlave)}{48} \seccontents {6.1}{Tracing and Debugging} {48} \seccontents {6.2}{Efficiency Considerations} {50} \seccontents {6.3}{Checkpointing in TOP-C} {51} \seccontents {6.4}{When Should a Slave Process be Considered Dead?} {51} \chapcontents {7}{MPI commands and UNIX system calls in ParGAP}{53} \seccontents {7.1}{Tutorial introduction to the MPI C library} {53} \seccontents {7.2}{Other low level commands} {56} \chapcontents {8}{Comments?}{58} \chapcontents {}{Bibliography}{59}