Thanks to John M. Linebarger of Sandia National Labs, Graham Mark of Los Alamos National Lab, Fr. Dennis Smolarski of the University of Santa Clara, David C. LeDoux, Thomas Fuerle of the University of Vienna, Scott Mueller of UCSB, and Dr. Hiroshi Akiba of the Applied Engineering Corporation for spotting most of these errors.

page xviii, second paragraph, line 9: . . . a brief a'' should be . . . a brief''. [Corrected in 3rd printing.]

page 2, last paragraph: Dr. Carlie Coats observed that the following values would be needed in order to carry out the weather simulation described in this paragraph:

• The vertical dimension of a grid rectangle should be 0.01 km, not 0.1 km.
• The calculations would require approximately 1800 timesteps per hour, not one timestep per hour.
• The number of calculations per grid node per timestep should be 1000, not 100.
These revised figures result in a total of 3.5 x 10^20 calculations for the entire simulation, and an exaflops (10^8 flops) computer would be necessary in order to complete the simulation in a reasonable amount of time. In fact, the largest area for which a simulation could be carried out by a teraflops computer is reduced from 20 million square kilometers to about 100 square kilometers.

page 15, fifth, line, Time Step 2a: the assignment should be z[i] = x[i]/y[i],'' not z[i] = z[i]/y[i].'' [Corrected in 3rd printing.]

page 15, displayed text (lines 3-9): replace occurrences of local_y'' with y[i].'' [00/01/26]

page 35, eighth line of third paragraph (2 lines after the boldface block mapping''):  q = 12'' should be n = 12''. [Corrected in 2nd Printing.]

page 51, about halfway down: paramters'' should be parameters.'' [Corrected in 2nd Printing.]

page 64, programming assignment 2, second displayed formula: f(b)'' should be f(q)''. [Corrected in 2nd Printing.]

page 72, Table 5.3: All occurrences of x and y should be replaced by &x and &y. [See also following two corrections. Corrected in 3rd printing.]

page 72, last paragraph, sentences 2-5 should be replaced with the following text: Suppose we have three processes A, B, and C, and A is broadcasting two floats, x and y, to B and C. Also suppose that on process A, x = 5 and y = 10. See Table 5.3. When the broadcasts are completed on all three processes, x = 5 and y = 10 on processes A and C. However on process B the values will be reversed: x = 10 and y = 5. [Corrected in 2nd Printing. See also preceding and following corrections.]

page 73, first paragraph, last clause: "B receives the the wrong data" should be "B stores the first value it receives, 5, in y. [Corrected in 2nd Printing. See also the preceding two corrections.]

page 75, fourth line: the word root'' should be in the uniform width font, i.e., it should appear as root.'' (2000/10/08)

page 82, last line of first paragraph: x'' should be in boldface, i.e., it should be x.'' (2000/10/08)

page 83, first part of second comment in source code should read, "local_m = m/p ." Note that m is unused. [Corrected in 3rd printing.]

page 83, Parallel_matrix_vector_prod function: MPI_All_gather should be MPI_Allgather. [Corrected in 2nd Printing.]

page 83, first paragraph of section 5.9: In a reduction, each process in a communicator contains an operand, and all of them are combined using a binary operator will be successively applied'' should be In a reduction, each process in a communicator contains an operand, and all of the operands are combined using a binary operator that is successively applied to each.'' [Corrected in 2nd Printing.]

page 89, first sentence of section 6.1: MPI_Receive'' should be MPI_Recv.'' (2000/10/08)

page 92, first line of paragraph containing definition of derived datatype'': derived datatype is sequence'' should be derived datatype is a sequence''. [Corrected in 2nd Printing.]

page 94, eighth line: the third argument to Get_data3, n_ptr, should be an out argument, not an in argument. (2002/16/02)

page 97, second sentence after displayed code in second paragraph, the phrase If we want to send the jth column of A'' should have j = 0, 1, . . ., 9 '' appended. [Corrected in 3rd printing.]

page 99, last line of first complete paragraph: m - 1'' should be n - 1.'' [Corrected in 2nd Printing.]

page 102, In the prototype for MPI_Unpack, the argument comm should have type MPI_Comm with a capital C. [Corrected in 3rd printing.]

page 106, third line from the bottom: the period at the end of the line should be a comma. (2000/10/08)

page 109, programming assignment 1a, line seven: delete the word contiguous.'' [Corrected in 2nd Printing.]

page 114, fifth line from the bottom of the page: Currently reads, During subsequent stages, process (i,j) will use ''  '' should be  '' (99/10/17) [Corrected in 3rd printing.]

page 123, second sentence of the second paragraph should read: If there are two dimensions, then the first row consists of processes 0, 1, . . . , dim_sizes[1]-1; the second row consists of processes dim_sizes[1], dim_sizes[1]+1, . . . , 2*dim_sizes[1]-1; etc.'' [Corrected in 3rd printing.]

page 130, last paragraph, second sentence: example'' should be examples.'' [Corrected in 2nd Printing.]

page 134, second block of displayed code: missing right brace }'' before else.'' [Corrected in 3rd printing.]

page 148, last paragraph: in the call to the function Get_io_rank, the argument extra_arg has type void*. (In the source code for chapter 8, extra_arg is global.) [Corrected in 2nd Printing.]

page 152, last line: NO_ATTR_VALUE'' should be NO_IO_ATTR''. [Corrected in 2nd Printing.]

page 153, second line: error_buf_siz'' should be error_bufsiz''. [Corrected in 2nd Printing.]

page 163, tenth line up from the bottom of the page: process 3'' should be process 2.'' (2000/10/08)

page 164, displayed type signature, thirteen lines above bottom of page: the final displacement should be

The first p'' is currently missing. (2000/10/08)

page 166, displayed type signature, three lines before section 8.4.6: the final displacement should be

The first p'' is currently missing. (2000/10/13)

page 174, prototype for MPI_Abort: a comma should follow the argument comm:

MPI_Comm    comm        /* in */,
(2000/10/08)

page 175, fifth and sixth lines above bottom of page: both occurrences of vector_mpi_type should be vector_mpi_t. (2000/10/08)

page 176, exercise 1: last sentence should be . . . reads in different types of data, modifies them, and prints out the modified data.'' [Corrected in 2nd printing.]

page 178, programming assignment 4: should be Write functions for the I/O . . .'' [Corrected in 2nd printing.]

page 218, last line: in the summation, the matrix entry a_ij is missing. In LaTex, the displayed formula should be

x_i^{(k+1)} = \frac{1}{a_{ii}}(b_i - \sum_{j \neq i} a_{ij}x_j^{(k)}).

When this is typeset it should look like this

[Corrected in 2nd printing.]

page 221, four lines above bottom of page: x'' should be in a uniform width font, i.e., it should be x.'' (2000/10/08)

page 221, last line: mod q'' should be mod p.'' (2000/10/08)

page 223, second set of displayed code: the for statement should read

for (root = 0; root < p; root++) { . . . }
[Corrected in 2nd printing.]

page 242, programming assignment 3: final sentence should close with a question mark. [Corrected in 2nd printing.]

page 259, line 6: Sandia National Lab'' should be Sandia National Labs.'' [Corrected in 2nd printing.]

page 261, first full sentence after second displayed formula: the parenthetical note should be (unlike in the real world)'' [Corrected in 2nd printing.]

page 266, paragraph before section 12.5.2, line 3: should be . . . generates large amounts of data that are stored . . .'' [Corrected in 2nd printing.]

page 277, last paragraph before Exercises, line 2: Argonne National Labs'' should be Argonne National Lab.'' [Corrected in 2nd printing.]

page 280, last sentence of second paragraph: the formula should be 2qt_s, where q is the floor of log_2(p). In LaTeX, this should be typeset as

2 \lfloor \log_2(p) \rfloor t_s
When this is typeset it should look like this
(2000/10/08)

page 280, last sentence: should be . . . copy the contents of the input array into the appropriate location in the output array.'' [Corrected in 2nd printing.]

page 281, figure 13.1, After second pass:'' the third element stored in the box labeled Process 3'' should be x3,'' not x5.'' (2000/10/08)

pages 294 and 310, prototype for MPI_Sendrecv: the type for the recv_type argument should be MPI_Datatype. [Corrected in 3rd printing.]

page 308, last line: MPI_Buffer_free should be MPI_Buffer_detach.'' (2000/10/08)

page 312, second paragraph, last line of displayed MPI function names: MPI_Rsend_int'' should be MPI_Rsend_init''. [Corrected in 2nd printing.]

page 313, exercise 3: In the third sentence communcation'' should be communication.'' In the sixth sentence status'' should be status.'' [Corrected in 2nd printing.]

page 315, first paragraph, lines five and six: as the rest of book'' should be as the rest of the book''. [Corrected in 2nd printing.]

page 317, second paragraph, displayed definitions of A_min and A_max are both missing commas before the ellipses. (2002/08/15)

page 325, paragraph 2, line 8: should be . . . so that the sums of the weights of the vertices assigned to the processes are equalized . . . '' [Corrected in 2nd printing.]

page 333, displayed code: 5th closing brace before the end of the code should be deleted. (2000/10/08)

page 352, last displayed equation: first occurrence of b'' should be x.'' That is, the equation should read

M-1Ax = M-1b
(2000/10/08)

page 353, second bullet: should be value of the diagonal entries in the matrix.'' [1st article added in 2nd printing; 2nd article added in 3rd printing.]

page 353, first line of next to last paragraph: Initialize'' should be Initialize_matrix.'' (2000/10/08)

page 356, second line of first full paragraph: Initialize'' should be Initialize_matrix.'' (2000/10/08)

page 358, next to last paragraph, line 6: should be . . . data structures and data access are generic.'' [Corrected in 2nd printing.]

page 371, prototype for MPI_Sendrecv: the type for the recvtag argument should be int. [Corrected in 3rd printing.]

page 373, paragraph on MPI_Type_hindexed: bytes'' should be in a Roman font, i.e., it should be bytes'' instead of bytes.'' (2000/10/08)

page 399, item 1: The full URL for the ftp directory for the mpich implementation is ftp://info.mcs.anl.gov/pub/mpi/ [Corrected in 3rd printing.]

page 399, item 2: The URL for the LAM implementation of MPI has been changed to http://www.lam-mpi.org.

page 400, item 4 before section B.2: WinMPI is no longer available at the indicated URL. W32MPI is now called WMPI, and its new URL is http://www.criticalsoftware.com/wmpi.

page 401, Section B.5: MPI-IO has been incorporated into MPI-2. See the MPI Forum home page http://www.mpi-forum.org [Updated in 3rd printing.]