"Page" refers to the first page in "Parallel Programming with MPI" containing code used in the program. Page File(s) and Description ---- ----------------------- 41 chap03/greetings.c -- greetings program 55 chap04/serial.c -- serial trapezoidal rule 57 chap04/trap.c -- parallel trapezoidal rule, first version 61 chap04/get_data.c -- parallel trap. rule, reads and distributes input using linear for loops. 67 chap05/get_data1.c -- parallel trap. rule, uses hand-coded, tree- structured broadcast to distribute input. 70 chap05/get_data2.c -- parallel trap. rule, uses 3 calls to MPI_Bcast to distribute input. 74 chap05/reduce.c -- parallel trap. rule, uses 3 calls to MPI_Bcast to distribute input and MPI_Reduce to compute final sum. 75 chap05/serial_dot.c -- serial dot product 76 chap05/parallel_dot.c -- parallel dot product 78 chap05/parallel_dot1.c -- parallel dot product using MPI_Allreduce 78 chap05/serial_mat_vect.c -- serial matrix-vector product 83 chap05/parallel_mat_vect.c -- parallel matrix-vector product 90 chap06/count.c -- send a subarray using count parameter 93 chap06/get_data3.c -- parallel trap. rule, builds derived datatype for use with distribution of input 96 chap06/send_row.c -- send row of a matrix 97 chap06/send_col.c -- use derived datatype to send a column of a matrix 98 chap06/send_triangle.c -- use derived datatype to send upper triangle of a matrix 100 chap06/send_col_to_row.c -- send a row of a matrix on one process to a column on another 100 chap06/get_data4.c -- parallel trap. rule, use MPI_Pack/Unpack in distribution of input 104 chap06/sparse_row.c -- use MPI_Pack/Unpack to send a row of sparse matrix 113 chap07/serial_mat_mult.c -- serial matrix multiplication of two square matrices 118 chap07/comm_create.c -- build a communicator using MPI_Comm_create 118 chap07/comm_test.c -- tests communicator built using MPI_Comm_create 120 chap07/comm_split.c -- builds a collection of communicators using MPI_Comm_split 121 chap07/top_fcns.c -- builds and tests basic Cartesian topology functions 125 chap07/fox.c -- uses Fox's algorithm to multiply two square matrices 140 chap08/cache_test.c -- cache and retrieve a process rank attribute 143 chap08/cio_test.c, cio.c, cio.h, vsscanf.c, vsscanf.h, Makefile.cio -- functions for basic collective I/O 154 chap08/stdin_test.c -- test whether an MPI implementation allows input from stdin. 154 chap08/arg_test.c -- test whether an MPI implementation allows processes access to command line arguments 157 chap08/cfopen.c -- open a file 157 chap08/multi_files.c -- each process opens and writes to a different file. 165 chap08/ub.c -- build a derived type that uses MPI_UB 166 chap08/sum.c, cyclic_io.c, cyclic_io.h, Makefile.sum -- functions for array I/O using cyclic distribution 180 chap09/bug.c -- bugged serial insertion sort 188 chap09/mat_mult.c -- nondeterministic matrix multiplication 192 chap09/comm_time_0.c -- initial ring pass program 200 chap09/comm_time_1.c -- added first debugging output 202 chap09/comm_time_2.c -- ring pass started by process 0 204 chap09/comm_time_2a.c -- printf added to Print_results 205 chap09/comm_time_3.c -- fixed incorrect calculation of *order_ptr 206 chap09/comm_time_3a.c -- two different message sizes 206 chap09/comm_time_4.c -- removed printf from Print_results 208 chap09/comm_time_5.c -- checking behavior of message-passing functions by adding Cprintf's 209 chap09/comm_time_6.c -- relocate pesky Cprintf's 210 chap09/comm_time_7.c -- remove debug output, change number of tests 211 chap09/err_handler.c -- test changing default error handler in MPI to MPI_ERRORS_RETURN 218 chap10/serial_jacobi.c -- serial version of Jacobi's method 223 chap10/parallel_jacobi.c -- parallel version of Jacobi's method 226 chap10/sort_1.c, sort_1.h -- level 1 version of sort program 231 chap10/sort_2.c, sort_2.h -- add Get_list_size, Allocate_list, and Get_local_keys 234 chap10/sort_3.c, sort_3.h -- add Redistribute_keys, finish Allocate_list, add Insert, Local_sort, and Print_list 237 chap10/sort_4.c, sort_4.h -- add Find_alltoall_send_params, Find_cutoff, and Find_recv_displacements. Allow user input list size 255 chap11/parallel_trap.c -- parallel trapezoidal rule with code for taking timings. 267 chap12/ping_pong.c -- two process ping-pong 268 chap12/send.c, bcast.c -- simple example showing MPI's profiling interface 283 chap13/ag_ring_blk.c -- ring allgather using blocking send/recv 292 chap13/ag_cube_blk.c -- hypercube allgather using blocking send/recv 298 chap13/ag_ring_nblk.c -- ring allgather using nonblocking communications 299 chap13/ag_cube_nblk.c -- hypercube allgather using nonblocking communications 301 chap13/ag_ring_pers.c -- ring allgather using persistent communication requests 305 chap13/ag_ring_syn.c -- ring allgather using synchronous sends 307 chap13/ag_ring_rdy.c -- ring allgather using ready mode sends 309 chap13/ag_ring_buf.c -- ring allgather using buffered mode sends 319 chap14a/serial_bitonic.c -- serial bitonic sort 322 chap14a/parallel_bitonic.c -- parallel bitonic sort 326 chap14a/recursive_dfs.c -- recursive depth-first search 327 chap14a/iterative_dfs.c -- iterative depth-first search 328 chap14b/par_tree_search.c, par_tree_search.h -- parallel tree search 330 chap14b/par_dfs.c, par_dfs.h -- parallel depth-first search 332 chap14b/service_requests.c service_requests.h -- checks for work requests from other processes 332 chap14b/work_remains.c, work_remains.h -- checks whether there is any work remaining on any process 334 chap14b/terminate.c, terminate.h -- distributed termination detection chap14b/Makefile, main.c, node_stack.c, node_stack.h, queue.c, queue.h, solution.c, solution.h, stats.c, stats.h -- additional files to complete parallel tree search program 345 chap15/linsolve.c, linsolve.h, Makefile.linsolve -- use ScaLAPACK to solve a dense system of linear equations 354 chap15/sparse_linsolve.c, Makefile.sparse_linsolve -- use PETSc to solve a sparse system of linear equations