diff --git a/doc/images/I_O_on_Few.png b/doc/images/I_O_on_Few.png
new file mode 100644
index 00000000000..8909c4e1b6a
Binary files /dev/null and b/doc/images/I_O_on_Few.png differ
diff --git a/doc/images/I_O_on_Many_Async.png b/doc/images/I_O_on_Many_Async.png
new file mode 100644
index 00000000000..aa32ad7863e
Binary files /dev/null and b/doc/images/I_O_on_Many_Async.png differ
diff --git a/doc/images/I_O_on_Many_Intracomm.png b/doc/images/I_O_on_Many_Intracomm.png
new file mode 100644
index 00000000000..e48efad2c25
Binary files /dev/null and b/doc/images/I_O_on_Many_Intracomm.png differ
diff --git a/doc/images/Makefile.am b/doc/images/Makefile.am
index b4d8ec5e447..1ab0bd06f21 100644
--- a/doc/images/Makefile.am
+++ b/doc/images/Makefile.am
@@ -4,5 +4,6 @@
# These are the images used in the documentation.
EXTRA_DIST = block-cyclic.png block-cyclic-rearr.png dof.png \
-dof-rearr.png PIO_Intercomm1.png PIO_Intracomm1.png \
-PIO_Library_Architecture1.jpg PIO_Decomposition.png
+dof-rearr.png PIO_Intracomm1.png PIO_Library_Architecture1.jpg \
+PIO_Decomposition.png I_O_on_Few.png I_O_on_Many_Intracomm.png \
+I_O_on_Many_Async.png PIO_Async.png
diff --git a/doc/images/PIO_Async.png b/doc/images/PIO_Async.png
new file mode 100644
index 00000000000..60711639a1c
Binary files /dev/null and b/doc/images/PIO_Async.png differ
diff --git a/doc/images/PIO_Intercomm1.png b/doc/images/PIO_Intercomm1.png
deleted file mode 100644
index accd27400a4..00000000000
Binary files a/doc/images/PIO_Intercomm1.png and /dev/null differ
diff --git a/doc/source/Introduction.txt b/doc/source/Introduction.txt
index a5f72b49d53..888c44a84f8 100644
--- a/doc/source/Introduction.txt
+++ b/doc/source/Introduction.txt
@@ -1,17 +1,54 @@
@tableofcontents
-/** @page intro Introduction
+/** @page intro Introduction
-PIO is a software interface layer designed to encapsolate the
-complexities of parallel IO and make it easier to replace the lower
-level software backend. It currently supports
netcdf and pnetcdf .
-
-@image html PIO_Library_Architecture1.jpg
+href=http://trac.mcs.anl.gov/projects/parallel-netcdf> pnetcdf to
+read and write the netCDF files (see @ref install).
-Basic description of how to optimize IO in a parallel environment:
+## Basic description of how to optimize IO in a parallel environment:
PIO calls are collective. A MPI communicator is set in a call to @ref
PIO_init and all tasks associated with that communicator must
diff --git a/doc/source/faq.txt b/doc/source/faq.txt
index 34f9c3db88c..c3c4bca3368 100644
--- a/doc/source/faq.txt
+++ b/doc/source/faq.txt
@@ -1,16 +1,42 @@
/*! \page faq Frequently Asked Questions
- Here is a list of frequently asked questions and their answers.
+Here is a list of frequently asked questions and their answers.
+
-- How do I specify which tasks perform IO?
- - This is done in the call to \ref PIO_init which has two interfaces: init_intracom and init_intercom.
-
- In the init_intracom interface, use the num_iotasks and stride variables to specify the total number of io tasks and the stride between them with respect to the mpi communicator, comp_comm, which is provided. You can also use the optional base argument to shift the first IO task away from the first computational task, this is often desirable because the applications first computational task often has higher memory requirements than other tasks. IO tasks are a subset of the tasks defined in comp_comm.
-
- In the init_intercom interface, IO tasks are a disjoint set of tasks from those in the computational communicator. This interface is still experimental and not recommended for production use at this time.
+
+
- How do I specify which tasks perform IO?
+
+- This is done in the call to \ref PIO_init which has two
+interfaces: init_intracom and init_intercom.
+
+
+
+ - In the init_intracom interface, use the num_iotasks and
+ stride variables to specify the total number of io tasks and the
+ stride between them with respect to the mpi communicator,
+ comp_comm, which is provided. You can also use the optional base
+ argument to shift the first IO task away from the first
+ computational task, this is often desirable because the
+ applications first computational task often has higher memory
+ requirements than other tasks. IO tasks are a subset of the tasks
+ defined in comp_comm.
+
+
- In the init_intercom interface, IO tasks are a disjoint set
+ of tasks from those in the computational communicator.
+
-Note that num_iotasks is the maximum number of IO tasks to use for an IO operation. The size of the field being read or written along with the tunable blocksize parameter, \ref PIO_set_blocksize, determines the actual number of tasks used for a given IO operation.
+
+Note that num_iotasks is the maximum number of IO tasks to use for an
+IO operation. The size of the field being read or written along with
+the tunable blocksize parameter, \ref PIO_set_blocksize, determines
+the actual number of tasks used for a given IO operation.
-- How do I test if PIO is installed and working correctly?
- - The PIO Library distribution contains tests for PIO. They are run my 'make check'. The tests use mpiexec to run tests on 4, 8, or 16 processors.
+
+- How do I test if PIO is installed and working correctly?
+
+- The PIO Library distribution contains tests for PIO. They are run
+my 'make check'. The tests use mpiexec to run tests on 4, 8, or 16
+processors.
*/
diff --git a/doc/source/iosystem.txt b/doc/source/iosystem.txt
index 830b60823e2..5acce7fc928 100644
--- a/doc/source/iosystem.txt
+++ b/doc/source/iosystem.txt
@@ -12,13 +12,13 @@ When the user program is complete, the IOSystem should be released by
calling C function PIOc_finalize() or Fortran function piolib_mod::finalize()
for each open IOSystem.
-@section intercomm_mode Intercomm Mode
+@section intracomm_mode Intracomm Mode
-@image html PIO_Intercomm1.png "PIO Intercomm Mode"
+@image html PIO_Intracomm1.png "PIO Intracomm Mode"
@section async_mode Async Mode
-@image html PIO_Intracomm1.png "PIO Async Mode"
+@image html PIO_Async.png "PIO Async Mode"
*/
diff --git a/src/clib/pioc.c b/src/clib/pioc.c
index 5e7b51fa895..0d12225e9f7 100644
--- a/src/clib/pioc.c
+++ b/src/clib/pioc.c
@@ -1210,7 +1210,8 @@ PIOc_finalize(int iosysid)
/* Free the MPI communicators. my_comm is just a copy (but not an
* MPI copy), so does not have to have an MPI_Comm_free()
* call. comp_comm and io_comm are MPI duplicates of the comms
- * handed into init_intercomm. So they need to be freed by MPI. */
+ * handed into PIOc_init_async(). So they need to be freed by
+ * MPI. */
if (ios->intercomm != MPI_COMM_NULL)
MPI_Comm_free(&ios->intercomm);
if (ios->union_comm != MPI_COMM_NULL)
@@ -1732,7 +1733,7 @@ PIOc_init_async(MPI_Comm world, int num_io_procs, int *io_proc_list,
if ((ret = MPI_Group_free(&world_group)))
return check_mpi(NULL, NULL, ret, __FILE__, __LINE__);
- LOG((2, "successfully done with PIO_Init_Async"));
+ LOG((2, "successfully done with PIOc_init_async"));
return PIO_NOERR;
}