An apparatus for internode data communications in a parallel computer, the parallel computer comprising a plurality of compute nodes, each compute node comprising main computer memory and a messaging unit, the messaging unit comprising messaging unit computer memory, the messaging unit comprising a module of automated computing machinery coupling the plurality of compute nodes for data communications, the apparatus comprising a computer processor, a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that, when executed, cause the apparatus to carry out the steps of:
- for each compute node at compute node boot time:
- allocating, by the messaging unit in the messaging unit's computer memory, a predefined number of message buffers, each message buffer associated with a process to be initialized on the compute node;
- receiving, by the messaging unit prior to initialization of a particular process on the compute node, a data communications message intended for the particular process;
- storing the data communications message in the message buffer associated with the particular process;
- upon initialization of the particular process, establishing, by the particular process, a messaging buffer in the main computer memory of the compute node;
- and
- copying, by the particular process, the data communications message from the message buffer of the messaging unit into the message buffer of the main computer memory, wherein:
- the parallel computer comprises a parallel active messaging interface (‘PAMI’) and the plurality of compute nodes execute a parallel application, the PAMI comprises data communications endpoints, each data communications endpoint comprising a specification of data communications parameters for a thread of execution on one of the plurality of compute nodes, including specifications of a client, a context, and a task, the data communication endpoints coupled for data communications through the PAMI;
- the particular process comprises one of the data communications endpoints;
- each client comprises a collection of data communications resources dedicated to exclusive use of an application-level data processing entity;
- each context comprises a subset of the collection of data processing resources of a client, context functions, and a work queue of data transfer instructions to be performed by use of the subset through the context functions operated by an assigned thread of execution;
- each task represents a process of execution of the parallel application;
- and
- each context carries out data communications operations independently and in parallel with other contexts.