mpiSynqNetNodeShutdown
Declaration
long mpiSynqNetNodeShutdown(MPISynqNet synqNet, MPISynqNetShutdownNodeMask nodeMask)
Required Header: stdmpi.h
Change History: Added in the 03.04.00
Description
mpiSynqNetNodeShutdown is used to systematically shutdown a bank of nodes specified by the nodeMask that are to be repaired or replaced. It should be called prior to mpiSynqNetNodeRestart(…), but if the node has already failed shutdown, it is not necessary. The nodes being shutdown should be consecutive to avoid stranding other nodes in the network. Recovery Mode should be enabled before shutting down the nodes in a ring topology.
synqNet | a handle to a SynqNet object. |
---|---|
nodeMask | a bit mask signifying the nodes that will be shutdown. Each bit represents a node (0x1 = node 0, 0x2 = node 1, etc.) |
Return Values | |
---|---|
MPIMessageOK | |
MPIMessageARG_INVALID | |
MPISynqNetMessageSHUTDOWN_NODES_NONCONSECUTIVE | |
MPISynqNetMessageSHUTDOWN_NODES_STRANDED | |
MPISynqNetMessageSHUTDOWN_RECOVERY_DISABLED |
Sample Code
The following code will attempt to restart nodes 9, 10, and 11.
#define NODE_9 (9)
#define NODE_10 (10)
#define NODE_11 (11) MPISynqNetShutdownNodeMask nodeMask;
nodeMask[0] = (1<<NODE_9) | (1<<NODE_10) | (1<<NODE_11) ; returnValue = mpiSynqNetNodeShutdown (synqNet, nodeMask); msgCHECK(returnValue); /* swap out and/or repair nodes 9, 10, 11 */ /* Restart nodes 9, 10, 11 */ returnValue = mpiSynqNetNodeRestart(synqNet);
msgCHECK(returnValue); /* check to see which nodes have been restarted */
returnValue = mpiSynqNetStatus(synqNet,
&status);
msgCHECK(returnValue);
if((nodeMask[0] & (status.failedNodeMask[0] |
status.shutdownNodeMask[0]))) {
/* a node did not restart... time for error handling */
}
See Also
mpiSynqNetShutdown | mpiSynqNetNodeRestart | mpiSynqNetStatus | MPISynqNetShutdownNodeMask | SynqNet HotReplace