------------------------------------------------------------------- The MPI calls used by the MILC code: (Carleton) ------------------------------------------------------------------- MPI_Init MPI_Attr_get MPI_Irecv MPI_Issend MPI_Send MPI_Recv MPI_Wait MPI_Comm_rank MPI_Comm_size MPI_Barrier MPI_Allreduce MPI_Bcast MPI_Abort MPI_Finalize Then, here is a brief list of the main components of the higher layer communications primitives according to the MILC message passing model. I haven't included broadcasts and variety of reduce operations, since these are already implemented or easily implemented in the Columbia Physics System. These routines sit on top of MPI. They are the routines that we should replace in a more efficient port of the MILC code to the QCDOC. make_gather Sets up neighbor lists for an arbitrary map of sites onto sites. Of course, the most common map is to next neighbors. The FFT needs a different map, of course. A frequently used map is a simple displacement, for which there are specialized gather routines. A number of applications use maps with an arbitray displacement. start_gather Initiates asynchronous communication according to the gather specified by make_gather. wait_gather Waits for asynchronous communication to complete. cleanup_gather Frees storage for a completed gather. restart_gather Same as start gather, but skips initialization. send_field Sends from one node to another. Used particularly in I/O. get_field Receives from send_field. There are also "field_pointer_at_coordinates" and "field_pointer_at_direction" for fetching a single data item to a given node, but they have fallen into disuse, so could probably be omitted -- certainly in the first crack.