|
THE DATAGRAM STREAM. More...
THE DATAGRAM STREAM.
Messages are sent using UDP datagrams. The sender allocates a struct for each datagram to be sent. These structs stick around until slightly after the datagram is acknowledged.
Datagrams are transmitted node-to-node (as opposed to pe-to-pe). Each node has an OtherNode struct for every other node in the system. The OtherNode struct contains:
send_queue (all datagram-structs not yet transmitted) send_window (all datagram-structs transmitted but not ack'd)
When an acknowledgement comes in, all packets in the send-window are either marked as acknowledged or pushed back into the send queue for retransmission.
THE OUTGOING MESSAGE
When you send or broadcast a message, the first thing the system does is system creates an OutgoingMsg struct to represent the operation. The OutgoingMsg contains a very direct expression of what you want to do:
OutgoingMsg:
size --- size of message in bytes data --- pointer to the buffer containing the message src --- processor which sent the message dst --- destination processor (-1=broadcast, -2=broadcast all) freemode --- see below. refcount --- see below.
The OutgoingMsg is kept around until the transmission is done, then it is garbage collected --- the refcount and freemode fields are to assist garbage collection.
The freemode indicates which kind of buffer-management policy was used (sync, async, or freeing). The sync policy is handled superficially by immediately converting sync sends into freeing sends. Thus, the freemode can either be 'A' (async) or 'F' (freeing). If the freemode is 'F', then garbage collection involves freeing the data and the OutgoingMsg structure itself. If the freemode is 'A', then the only cleanup is to change the freemode to 'X', a condition which is then detectable by CmiAsyncMsgSent. In this case, the actual freeing of the OutgoingMsg is done by CmiReleaseCommHandle.
When the transmission is initiated, the system computes how many datagrams need to be sent, total. This number is stored in the refcount field. Each time a datagram is delivered, the refcount is decremented, when it reaches zero, cleanup is performed. There are two exceptions to this rule. Exception 1: if the OutgoingMsg is a send (not a broadcast) and can be performed with shared memory, the entire datagram system is bypassed, the message is simply delivered and freed, not using the refcount mechanism at all. Exception 2: If the message is a broadcast, then part of the broadcast that can be done via shared memory is performed prior to initiating the datagram/refcount system.
DATAGRAM FORMATS AND MESSAGE FORMATS
Datagrams have this format:
srcpe (16 bits) --- source processor number. magic ( 8 bits) --- magic number to make sure DG is good. dstrank ( 8 bits) --- destination processor rank. seqno (32 bits) --- packet sequence number. data (XX byte) --- user data.
The only reason the srcpe is in there is because the receiver needs to know which receive window to use. The dstrank field is needed because transmission is node-to-node. Once the message is assembled by the node, it must be delivered to the appropriate PE. The dstrank field is used to encode certain special-case scenarios. If the dstrank is DGRAM_BROADCAST, the transmission is a broadcast, and should be delivered to all processors in the node. If the dstrank is DGRAM_ACKNOWLEDGE, the datagram is an acknowledgement datagram, in which case the srcpe is the number of the acknowledger, the seqno is always zero, and the user data is a list of the seqno's being acknowledged. There may be other dstrank codes for special functions.
To send a message, one chops it up into datagrams and stores those datagrams in a send-queue. These outgoing datagrams aren't stored in the explicit format shown above. Instead, they are stored as ImplicitDgrams, which contain the datagram header and a pointer to the user data (which is in the user message buffer, which is in the OutgoingMsg). At transmission time these are combined together.
The combination of the datagram header with the user's data is performed right in the user's message buffer. Note that the datagram header is exactly 64 bits. One simply overwrites 64 bits of the user's message with a datagram header, sends the datagram straight from the user's message buffer, then restores the user's buffer to its original state. There is a small problem with the first datagram of the message: one needs 64 bits of space to store the datagram header. To make sure this space is there, we added a 64-bit unused space to the front of the Cmi message header. In addition to this, we also add 32 bits to the Cmi message header to make room for a length-field, making it possible to identify message boundaries.
CONCURRENCY CONTROL
This has changed recently.
EFFICIENCY NOTES
The sender-side does little copying. The async and freeing send routines do no copying at all. The sync send routines copy the message, then use the freeing-send routines. The other alternative is to not copy the message, and use the async send mechanism combined with a blocking wait. Blocking wait seems like a bad idea, since it could take a VERY long time to get all those datagrams out the door.
The receiver side, unfortunately, must copy. To avoid copying, it would have to receive directly into a preallocated message buffer. Unfortunately, this can't work: there's no way to know how much memory to preallocate, and there's no way to know which datagram is coming next. Thus, we receive into fixed-size (large) datagram buffers. These are then inspected, and the messages extracted from them.
Note that we are allocating a large number of structs: OutgoingMsg's, ImplicitDgrams, ExplicitDgrams. By design, each of these structs is a fixed-size structure. Thus, we can do memory allocation by simply keeping a linked-list of unused structs around. The only place where expensive memory allocation is performed is in the sync routines.
Since the datagrams from one node to another are fully ordered, there is slightly more ordering than is needed: in theory, the datagrams of one message don't need to be ordered relative to the datagrams of another. This was done to simplify the sequencing mechanisms: implementing a fully-ordered stream is much simpler than a partially-ordered one. It also makes it possible to modularize, layering the message transmitter on top of the datagram-sequencer. In other words, it was just easier this way. Hopefully, this won't cause serious degradation: LAN's rarely get datagrams out of order anyway.
A potential efficiency problem is the lack of message-combining. One datagram could conceivably contain several messages. This might be more efficient, it's not clear how much overhead is involved in sending a short datagram. Message-combining isn't really ``integrated'' into the design of this software, but you could fudge it as follows. Whenever you pull a short datagram from the send-queue, check the next one to see if it's also a short datagram. If so, pack them together into a ``combined'' datagram. At the receive side, simply check for ``combined'' datagrams, and treat them as if they were simply two datagrams. This would require extra copying. I have no idea if this would be worthwhile.
| typedef struct OutgoingMsgStruct * OutgoingMsg |
| typedef struct ExplicitDgramStruct * ExplicitDgram |
| typedef struct ImplicitDgramStruct * ImplicitDgram |
| typedef enum __qp_connection_state qp_connection_state_t |
| typedef struct FutureMessageStruct * FutureMessage |
| typedef struct OtherNodeStruct * OtherNode |
| typedef struct PendingMsgStruct * PendingMsg |
Definition at line 1060 of file machine-gm.c.
Definition at line 1069 of file machine-gm.c.
Definition at line 1075 of file machine-gm.c.
Definition at line 1087 of file machine-gm.c.
| typedef struct infiPacketStruct* infiPacket |
| typedef struct infiCmiChunkMetaDataStruct infiCmiChunkMetaData |
| typedef struct infiPacketStruct* infiPacket |
| typedef struct infiBufferedBcastPoolStruct * infiBufferedBcastPool |
| typedef struct infiCmiChunkMetaDataStruct infiCmiChunkMetaData |
| typedef struct directPollingQNodeStruct directPollingQNode |
| typedef struct infiDirectHandleStruct infiDirectHandle |
| typedef struct infiDirectHandleTableStruct infiDirectHandleTable |
| typedef struct PendingSentMsgStruct * PendingSentMsg |
| QP_CONN_STATE_PRE_CONNECT | |
| QP_CONN_STATE_CONNECTED | |
| QP_CONN_STATE_CONNECTION_LOST | |
| QP_CONN_STATE_CONNECTION_CLOSED |
Definition at line 259 of file machine-dgram.c.
| anonymous enum |
| anonymous enum |
Stored in the OtherNode structure in machine-dgram.c Store the per node data for ibverbs layer.
Definition at line 296 of file machine-ibverbs.c.
| enum entities |
| unsigned char computeCheckSum | ( | unsigned char * | data, | |
| int | len | |||
| ) |
Definition at line 3403 of file convcore.c.
Referenced by EnqueueOutgoingDgram(), processMessage(), ProcessMessage(), ReceiveDatagram(), TransmitAckDatagram(), TransmitImplicitDgram(), and TransmitImplicitDgram1().
| static void randomCorrupt | ( | char * | data, | |
| int | len | |||
| ) | [static] |
| static void setspeed_atm | ( | ) | [static] |
Definition at line 113 of file machine-dgram.c.
References Cmi_ack_delay, and Cmi_delay_retransmit.
Referenced by extract_args().
| static void setspeed_eth | ( | ) | [static] |
Definition at line 122 of file machine-dgram.c.
References Cmi_ack_delay, and Cmi_delay_retransmit.
Referenced by extract_args().
| static void setspeed_gigabit | ( | ) | [static] |
Definition at line 131 of file machine-dgram.c.
References Cmi_ack_delay, and Cmi_delay_retransmit.
Referenced by extract_args().
| static void extract_args | ( | char ** | argv | ) | [static] |
Definition at line 141 of file machine-dgram.c.
References Cmi_ack_delay, Cmi_delay_retransmit, CmiAbort(), CmiGetArgFlagDesc(), CmiGetArgIntDesc(), KillEveryone(), setspeed_atm(), setspeed_eth(), and setspeed_gigabit().
Referenced by KillOnAllSigs().
| struct infiOtherNodeData * initinfiData | ( | int | node, | |
| int | lid, | |||
| int | qpn, | |||
| int | psn | |||
| ) | [read] |
Definition at line 1017 of file machine-ibud.c.
References INFI_HEADER_DATA, infiAddr::lid, malloc(), infiOtherNodeData::nodeNo, infiAddr::psn, infiOtherNodeData::qp, infiAddr::qpn, and infiOtherNodeData::state.
Referenced by node_addresses_store().
| struct infiOtherNodeData * initInfiOtherNodeData | ( | int | node, | |
| int | addr[3] | |||
| ) | [read] |
Definition at line 751 of file machine-ibverbs.c.
References CmiAbort(), infiContext::ibPort, INFI_HEADER_DATA, infiContext::localAddr, malloc(), mtu, infiOtherNodeData::nodeNo, infiAddr::psn, infiOtherNodeData::psn, infiContext::qp, infiOtherNodeData::qp, infiOtherNodeData::recvPsn, and infiOtherNodeData::state.
Referenced by node_addresses_store().
| void infiPostInitialRecvs | ( | ) |
Definition at line 479 of file machine-ibud.c.
References allocateInfiBufferPool(), postInitialRecvs(), and infiContext::recvBufferPool.
Referenced by node_addresses_store().
| void CommunicationServerSysvshm | ( | ) | [inline] |
Definition at line 295 of file machine-sysvshm.c.
References CmiMemoryCheck(), CmiWallTimer(), SysvshmContext::commServerTime, emptyAllRecvBufs(), and flushAllSendQs().
Referenced by CmiNotifyStillIdleSysvshm(), CommunicationPeriodic(), and KillOnAllSigs().
| void CommunicationServerPxshm | ( | ) | [inline] |
Referenced by CmiSendMessagePxshm(), CommunicationPeriodic(), and KillOnAllSigs().
| static void OtherNode_init | ( | OtherNode | node | ) | [static] |
Definition at line 407 of file machine-dgram.c.
References OtherNodeStruct::asm_fill, OtherNodeStruct::asm_msg, OtherNodeStruct::asm_rank, OtherNodeStruct::asm_total, CdsFifo_Create(), OtherNodeStruct::disable, OtherNodeStruct::futureMsgs, OtherNodeStruct::gm_pending, malloc(), OtherNodeStruct::recd_bytes, OtherNodeStruct::recd_msgs, OtherNodeStruct::recv_ack_cnt, OtherNodeStruct::recv_ack_seqno, OtherNodeStruct::recv_ack_time, OtherNodeStruct::recv_expect, OtherNodeStruct::recv_next, OtherNodeStruct::recv_window, OtherNodeStruct::recv_winsz, OtherNodeStruct::retransmit_leash, OtherNodeStruct::send_ack_seqno, OtherNodeStruct::send_good, OtherNodeStruct::send_last, OtherNodeStruct::send_next, OtherNodeStruct::send_primer, OtherNodeStruct::send_queue_h, OtherNodeStruct::send_queue_t, OtherNodeStruct::send_window, OtherNodeStruct::sendhead, OtherNodeStruct::sendtail, OtherNodeStruct::sent_bytes, OtherNodeStruct::sent_msgs, OtherNodeStruct::stat_ack_pkts, OtherNodeStruct::stat_proc_intr, OtherNodeStruct::stat_recv_ack, OtherNodeStruct::stat_recv_pkt, OtherNodeStruct::stat_resend_pkt, OtherNodeStruct::stat_send_ack, OtherNodeStruct::stat_send_pkt, and OtherNodeStruct::stat_total_intr.
Referenced by node_addresses_store().
Return 1 if our outgoing message queue for this node is longer than this many bytes.
Definition at line 472 of file machine-dgram.c.
References CmiCommLock(), CmiCommUnlock(), ImplicitDgramStruct::datalen, ImplicitDgramStruct::next, and OtherNodeStruct::send_queue_h.
| void CmiGmConvertMachineID | ( | unsigned int * | mach_id | ) |
| static void node_addresses_store | ( | ChMessage * | msg | ) | [static] |
Definition at line 501 of file machine-dgram.c.
References _Cmi_mynode, _Cmi_mynodesize, _Cmi_numnodes, _Cmi_numpes, OtherNodeStruct::addr, ChMessageInt(), ChMessageLong(), Cmi_nodestart, CmiAmmassoNodeAddressesStoreHandler(), CmiGmConvertMachineID(), ChMessage::data, dataport, OtherNodeStruct::dataport, OtherNodeStruct::infiData, infiPostInitialRecvs(), initinfiData(), initInfiOtherNodeData(), OtherNodeStruct::IP, ChMessage::len, infiAddr::lid, OtherNodeStruct::mach_id, machine_exit(), malloc(), n, OtherNodeStruct::nic_id, OtherNodeStruct::nodesize, OtherNodeStruct::nodestart, OtherNode_init(), printf(), infiOtherNodeData::psn, infiAddr::psn, infiOtherNodeData::qp, infiAddr::qpn, skt_build_addr(), and OtherNodeStruct::sock.
Referenced by KillOnAllSigs().
| void printNetStatistics | ( | void | ) |
Definition at line 601 of file machine-dgram.c.
References CmiPrintf(), OtherNodeStruct::recd_bytes, OtherNodeStruct::recd_msgs, OtherNodeStruct::sent_bytes, OtherNodeStruct::sent_msgs, OtherNodeStruct::stat_ack_pkts, OtherNodeStruct::stat_proc_intr, OtherNodeStruct::stat_recv_ack, OtherNodeStruct::stat_recv_pkt, OtherNodeStruct::stat_resend_pkt, OtherNodeStruct::stat_send_ack, OtherNodeStruct::stat_send_pkt, OtherNodeStruct::stat_total_intr, and statstr.
Referenced by KillOnAllSigs().
| void GarbageCollectMsg | ( | OutgoingMsg | ogm | ) |
Definition at line 716 of file machine-dgram.c.
References CmiFree(), OutgoingMsgStruct::data, OutgoingMsgStruct::freemode, and OutgoingMsgStruct::refcount.
Referenced by CmiSendMessagePxshm(), DiscardImplicitDgram(), flushSendQ(), KillOnAllSigs(), processRdmaAck(), and PumpEvents().
| void DiscardImplicitDgram | ( | ImplicitDgram | dg | ) |
Definition at line 729 of file machine-dgram.c.
References GarbageCollectMsg(), ImplicitDgramStruct::ogm, and OutgoingMsgStruct::refcount.
Referenced by IntegrateAckDatagram().
| static void CommunicationsClock | ( | void | ) | [static] |
Definition at line 743 of file machine-dgram.c.
References Cmi_ack_delay, Cmi_ack_last, Cmi_check_last, and GetClock().
Referenced by CommunicationsClockCaller(), and CommunicationServer().
| static void CommunicationsClockCaller | ( | void * | ignored | ) | [static] |
Definition at line 762 of file machine-dgram.c.
References CcdCallFnAfter(), CmiCommLock(), CmiCommUnlock(), and CommunicationsClock().
Referenced by KillOnAllSigs().
| static void CommunicationPeriodic | ( | void | ) | [static] |
Definition at line 770 of file machine-dgram.c.
References CommunicationServer(), CommunicationServerPxshm(), and CommunicationServerSysvshm().
Referenced by CommunicationPeriodicCaller(), and KillOnAllSigs().
| static void CommunicationPeriodicCaller | ( | void * | ignored | ) | [static] |
Definition at line 781 of file machine-dgram.c.
References CcdCallFnAfter(), and CommunicationPeriodic().
| void DeliverViaNetwork | ( | OutgoingMsg | ogm, | |
| OtherNode | node, | |||
| int | rank, | |||
| unsigned int | broot, | |||
| int | copy | |||
| ) |
| void SendSpanningChildren | ( | OutgoingMsg | ogm, | |
| int | root, | |||
| int | size, | |||
| char * | msg, | |||
| unsigned int | startpe, | |||
| int | nodesend | |||
| ) |
| void SendHypercube | ( | OutgoingMsg | ogm, | |
| int | root, | |||
| int | size, | |||
| char * | msg, | |||
| unsigned int | curcycle, | |||
| int | nodesend | |||
| ) |
| int CmiBarrier | ( | void | ) |
The call of CmiBarrier is usually before the initialization of trace module of Charm++, therefore, the START_EVENT and END_EVENT are disabled here. -Chao Mei
Definition at line 837 of file machine-dgram.c.
| int CmiBarrierZero | ( | void | ) |
Definition at line 842 of file machine-dgram.c.
| static CmiIdleState* CmiNotifyGetState | ( | void | ) | [static] |
Definition at line 32 of file machine-eth.c.
References CmiGetState(), CmiIdleState::cs, malloc(), CmiIdleState::nIdles, s, and CmiIdleState::sleepMs.
| static void CmiNotifyBeginIdle | ( | CmiIdleState * | s | ) | [static] |
Definition at line 41 of file machine-eth.c.
References CmiIdleState::nIdles, and CmiIdleState::sleepMs.
| static void CmiNotifyStillIdle | ( | CmiIdleState * | s | ) | [static] |
Definition at line 49 of file machine-eth.c.
References _Cmi_noprocforcommthread, CmiMyPe(), CommunicationServer(), CmiIdleState::cs, CmiStateStruct::idle, CmiIdleState::nIdles, and CmiIdleState::sleepMs.
| void CmiNotifyIdle | ( | void | ) |
Definition at line 79 of file machine-eth.c.
References CmiNotifyStillIdle(), s, and CmiIdleState::sleepMs.
Definition at line 96 of file machine-eth.c.
References CheckSocketsReady(), Cmi_charmrun_fd, ctrlskt_ready_read, dataskt, dataskt_ready_read, dataskt_ready_write, writeableAcks, and writeableDgrams.
| void TransmitAckDatagram | ( | OtherNode | node | ) |
Definition at line 166 of file machine-eth.c.
References OtherNodeStruct::addr, Cmi_nodestart, Cmi_window_size, computeCheckSum(), dataskt, head, DgramHeader::magic, OtherNodeStruct::nodestart, OtherNodeStruct::recv_next, OtherNodeStruct::recv_window, OtherNodeStruct::send_ack_seqno, ExplicitDgramStruct::seqno, OtherNodeStruct::stat_send_ack, and DgramAck::window.
Referenced by TransmitAcknowledgement().
| int TransmitImplicitDgram | ( | ImplicitDgram | dg | ) |
Definition at line 204 of file machine-eth.c.
References OtherNodeStruct::addr, ImplicitDgramStruct::broot, Cmi_nodestart, computeCheckSum(), data, ImplicitDgramStruct::datalen, ImplicitDgramStruct::dataptr, dataskt, ImplicitDgramStruct::dest, dest, head, DgramHeader::magic, OtherNodeStruct::nodestart, ImplicitDgramStruct::rank, ImplicitDgramStruct::seqno, ImplicitDgramStruct::srcpe, and OtherNodeStruct::stat_send_pkt.
Referenced by TransmitDatagram().
| void TransmitImplicitDgram1 | ( | ImplicitDgram | dg | ) |
Definition at line 230 of file machine-eth.c.
References OtherNodeStruct::addr, ImplicitDgramStruct::broot, Cmi_nodestart, computeCheckSum(), data, ImplicitDgramStruct::datalen, ImplicitDgramStruct::dataptr, dataskt, ImplicitDgramStruct::dest, dest, head, DgramHeader::magic, OtherNodeStruct::nodestart, ImplicitDgramStruct::rank, ImplicitDgramStruct::seqno, ImplicitDgramStruct::srcpe, and OtherNodeStruct::stat_resend_pkt.
Referenced by TransmitDatagram().
| int TransmitAcknowledgement | ( | ) |
Definition at line 265 of file machine-eth.c.
References _Cmi_numnodes, Cmi_ack_delay, Cmi_half_window, nodes, OtherNodeStruct::recv_ack_cnt, OtherNodeStruct::recv_ack_time, OtherNodeStruct::recv_winsz, and TransmitAckDatagram().
Referenced by CommunicationServer().
| int TransmitDatagram | ( | ) |
Definition at line 297 of file machine-eth.c.
References _Cmi_numnodes, Cmi_delay_retransmit, Cmi_window_size, ImplicitDgramStruct::next, nodes, OtherNodeStruct::send_last, OtherNodeStruct::send_primer, OtherNodeStruct::send_queue_h, OtherNodeStruct::send_window, ImplicitDgramStruct::seqno, TransmitImplicitDgram(), and TransmitImplicitDgram1().
Referenced by CmiCheckSocks(), and CommunicationServer().
| void EnqueueOutgoingDgram | ( | OutgoingMsg | ogm, | |
| char * | ptr, | |||
| int | len, | |||
| OtherNode | node, | |||
| int | rank, | |||
| int | broot | |||
| ) |
Definition at line 345 of file machine-eth.c.
References ImplicitDgramStruct::broot, ImplicitDgramStruct::datalen, ImplicitDgramStruct::dataptr, ImplicitDgramStruct::dest, OutgoingMsgStruct::dst, ImplicitDgramStruct::next, ImplicitDgramStruct::ogm, ImplicitDgramStruct::rank, OutgoingMsgStruct::refcount, OtherNodeStruct::send_next, OtherNodeStruct::send_queue_h, OtherNodeStruct::send_queue_t, ImplicitDgramStruct::seqno, OutgoingMsgStruct::src, and ImplicitDgramStruct::srcpe.
| void AssembleDatagram | ( | OtherNode | node, | |
| ExplicitDgram | dg | |||
| ) |
Definition at line 414 of file machine-eth.c.
References _Cmi_mynode, _Cmi_mynodesize, OtherNodeStruct::asm_fill, OtherNodeStruct::asm_msg, OtherNodeStruct::asm_rank, OtherNodeStruct::asm_total, ExplicitDgramStruct::broot, Cmi_nodestart, CmiAlloc(), CmiPushNode(), CmiPushPE(), ExplicitDgramStruct::data, KillEveryoneCode(), ExplicitDgramStruct::len, msg, nodes, OtherNodeStruct::nodestart, ExplicitDgramStruct::rank, OtherNodeStruct::recd_bytes, OtherNodeStruct::recd_msgs, SendHypercube(), SendSpanningChildren(), ExplicitDgramStruct::seqno, setMemoryTypeMessage(), and ExplicitDgramStruct::srcpe.
Referenced by AssembleReceivedDatagrams().
| void AssembleReceivedDatagrams | ( | OtherNode | node | ) |
Definition at line 501 of file machine-eth.c.
References AssembleDatagram(), Cmi_window_size, OtherNodeStruct::recv_next, OtherNodeStruct::recv_window, and OtherNodeStruct::recv_winsz.
Referenced by IntegrateMessageDatagram().
| void IntegrateMessageDatagram | ( | ExplicitDgram | dg | ) |
Definition at line 532 of file machine-eth.c.
References AssembleReceivedDatagrams(), Cmi_ack_delay, Cmi_nodestart, Cmi_window_size, nodes_by_pe, OtherNodeStruct::recv_ack_cnt, OtherNodeStruct::recv_ack_time, OtherNodeStruct::recv_expect, OtherNodeStruct::recv_next, OtherNodeStruct::recv_window, OtherNodeStruct::recv_winsz, ExplicitDgramStruct::seqno, ExplicitDgramStruct::srcpe, OtherNodeStruct::stat_recv_pkt, and writeableAcks.
Referenced by ReceiveDatagram().
| void IntegrateAckDatagram | ( | ExplicitDgram | dg | ) |
Definition at line 616 of file machine-eth.c.
References Cmi_nodestart, Cmi_window_size, ExplicitDgramStruct::data, diff, DiscardImplicitDgram(), ImplicitDgramStruct::next, nodes_by_pe, OtherNodeStruct::nodestart, OtherNodeStruct::recv_ack_seqno, OtherNodeStruct::send_queue_h, OtherNodeStruct::send_queue_t, OtherNodeStruct::send_window, ImplicitDgramStruct::seqno, ExplicitDgramStruct::seqno, ExplicitDgramStruct::srcpe, OtherNodeStruct::stat_ack_pkts, OtherNodeStruct::stat_recv_ack, DgramAck::window, and writeableDgrams.
Referenced by ReceiveDatagram().
| void ReceiveDatagram | ( | ) |
Definition at line 698 of file machine-eth.c.
References ExplicitDgramStruct::broot, Cmi_max_dgram_size, CmiPrintf(), computeCheckSum(), ExplicitDgramStruct::data, dataskt, errno, IntegrateAckDatagram(), IntegrateMessageDatagram(), KillEveryoneCode(), ExplicitDgramStruct::len, randomCorrupt(), ExplicitDgramStruct::rank, ExplicitDgramStruct::seqno, and ExplicitDgramStruct::srcpe.
Referenced by CmiCheckSocks(), and CommunicationServer().
| void CmiHandleImmediate | ( | ) |
Definition at line 95 of file immediate.c.
References CmiHandleImmediateMessage(), CmiPushImmediateMsg(), CmiTryLock(), CmiUnlock(), currentImmediateMsg, msg, and PCQueuePop().
Referenced by CommunicationServer(), CommunicationServerThread(), KillOnAllSigs(), and PumpMsgs().
Definition at line 758 of file machine-eth.c.
References CheckSocketsReady(), Cmi_nodestart, CmiCommLock(), CmiCommUnlock(), CmiGetState(), CmiHandleImmediate(), CommunicationsClock(), ctrlskt_ready_read, dataskt_ready_read, dataskt_ready_write, GetClock(), idle, PumpPersistent(), ReceiveDatagram(), TransmitAcknowledgement(), TransmitDatagram(), writeableAcks, and writeableDgrams.
| void CmiMachineInit | ( | char ** | argv | ) |
Definition at line 817 of file machine-eth.c.
References AsynchronousEventHandler(), cc_status_to_string(), CmiAbort(), contextBlock, malloc(), __context_block::pd_id, and __context_block::rnic.
Referenced by KillOnAllSigs().
| void CmiCommunicationInit | ( | char ** | argv | ) |
Definition at line 821 of file machine-eth.c.
| void CmiMachineExit | ( | ) |
Definition at line 825 of file machine-eth.c.
References AmmassoDoIdle(), AsynchronousEventHandler(), cc_status_to_string(), closeQPConnection(), CmiAbort(), CmiDestroyLock(), contextBlock, DeliverViaNetwork(), __context_block::myNode, nodes, __context_block::numNodes, processAmmassoControlMessage(), ProcessMessage(), __context_block::rnic, sendAck(), and sendDataOnQP().
Referenced by machine_exit().
| static void sendBarrierMessage | ( | int | pe | ) | [static] |
Definition at line 829 of file machine-eth.c.
References OtherNodeStruct::addr, dataskt, and nodes.
Referenced by CmiBarrier(), and CmiBarrierZero().
| static void recvBarrierMessage | ( | ) | [static] |
| void handleGetSrc | ( | void * | msg | ) |
Definition at line 140 of file conv-onesided.c.
References CmiRMA::cb, CmiFree(), CmiRMA::completed, context, CmiCb::fn, CmiCb::param, CmiRMA::ready, RMAPutMsg::Saddr, RMAPutMsg::size, RMAPutMsg::stat, and CmiRMA::type.
Referenced by KillOnAllSigs().
| void handleGetDest | ( | void * | msg | ) |
Definition at line 159 of file conv-onesided.c.
References CmiAlloc(), CmiFree(), Converse::CmiSyncSendAndFree(), context, getSrcHandler, RMAPutMsg::size, RMAPutMsg::sourceId, and RMAPutMsg::Taddr.
Referenced by KillOnAllSigs().
Definition at line 111 of file machine-gm.c.
References OtherNodeStruct::dataport, PendingMsgStruct::dataport, PendingMsgStruct::length, OtherNodeStruct::mach_id, PendingMsgStruct::mach_id, PendingMsgStruct::msg, PendingMsgStruct::next, PendingMsgStruct::node_idx, nodes, OtherNodeStruct::sendhead, OtherNodeStruct::sendtail, and PendingMsgStruct::size.
| static void alarmcallback | ( | void * | context | ) | [static] |
Definition at line 143 of file machine-gm.c.
| static int processEvent | ( | gm_recv_event_t * | e | ) | [static] |
Definition at line 466 of file machine-gm.c.
References msg, processMessage(), size, and status().
Referenced by CommunicationServer_nolock().
| static void send_progress | ( | ) | [static] |
Definition at line 613 of file machine-gm.c.
References _Cmi_numnodes, PendingMsgStruct::dataport, dataport, OtherNodeStruct::disable, OtherNodeStruct::gm_pending, PendingMsgStruct::length, PendingMsgStruct::mach_id, PendingMsgStruct::msg, PendingMsgStruct::next, nodes, send_callback(), and PendingMsgStruct::size.
Referenced by send_callback().
| static void alarmInterrupt | ( | int | arg | ) | [static] |
| static char * getErrorMsg | ( | gm_status_t | status | ) | [static] |
Definition at line 1033 of file machine-gm.c.
Referenced by PumpEvents(), recv_callback(), and send_callback().
| static void ServiceCharmrun_nolock | ( | ) | [static] |
Definition at line 293 of file machine-gm.c.
References CheckSocketsReady(), and ctrlskt_ready_read.
| static void CommunicationServer_nolock | ( | int | withDelayMs | ) | [static] |
| static void processMessage | ( | char * | msg, | |
| int | len | |||
| ) | [static] |
Definition at line 354 of file machine-gm.c.
References _Cmi_mynodesize, OtherNodeStruct::asm_fill, OtherNodeStruct::asm_msg, OtherNodeStruct::asm_rank, OtherNodeStruct::asm_total, CmiAbort(), CmiAlloc(), CmiMyPe(), CmiPrintf(), CmiPushNode(), CmiPushPE(), computeCheckSum(), nodes_by_pe, OtherNodeStruct::recv_expect, SendHypercube(), SendSpanningChildren(), and size.
Referenced by processEvent(), processFutureMessages(), processRecvWC(), PumpEvents(), and recv_callback().
| void drop_send_callback | ( | struct gm_port * | p, | |
| void * | context, | |||
| gm_status_t | status | |||
| ) |
Definition at line 507 of file machine-gm.c.
References CmiMyPe(), PendingMsgStruct::msg, msg, and printf().
Referenced by send_callback().
| void send_callback | ( | struct gm_port * | p, | |
| void * | context, | |||
| gm_status_t | status | |||
| ) |
Definition at line 533 of file machine-gm.c.
References CmiAbort(), CmiPrintf(), OtherNodeStruct::dataport, PendingMsgStruct::dataport, OtherNodeStruct::disable, drop_send_callback(), getErrorMsg(), OtherNodeStruct::gm_pending, PendingMsgStruct::length, OtherNodeStruct::mach_id, PendingMsgStruct::mach_id, PendingMsgStruct::msg, msg, PendingMsgStruct::node_idx, nodes, send_progress(), and PendingMsgStruct::size.
Referenced by send_progress().
| static void send_callback_nothing | ( | struct gm_port * | p, | |
| void * | context, | |||
| gm_status_t | status | |||
| ) | [static] |
Definition at line 751 of file machine-gm.c.
| void CmiCheckGmStatus | ( | ) |
Definition at line 1005 of file machine-gm.c.
References _Cmi_numnodes, CmiAbort(), CmiMyPe(), CmiPrintf(), OtherNodeStruct::mach_id, machine_exit(), and nodes.
Referenced by KillOnAllSigs().
| void* CmiDMAAlloc | ( | int | size | ) |
Definition at line 1089 of file machine-gm.c.
| void put_callback | ( | struct gm_port * | p, | |
| void * | context, | |||
| gm_status_t | status | |||
| ) |
Definition at line 1118 of file machine-gm.c.
References CmiRMA::cb, CmiAbort(), CmiFree(), CmiPrintf(), CmiRMA::completed, RMAPutMsg::dataport, CmiCb::fn, nodes_by_pe, CmiCb::param, CmiRMA::ready, RMAPutMsg::Saddr, RMAPutMsg::size, RMAPutMsg::stat, RMAPutMsg::Taddr, RMAPutMsg::targetId, and CmiRMA::type.
Referenced by CmiPut(), and CmiPutCb().
| void* CmiPut | ( | unsigned int | sourceId, | |
| unsigned int | targetId, | |||
| void * | Saddr, | |||
| void * | Taddr, | |||
| unsigned int | size | |||
| ) |
Definition at line 1149 of file machine-gm.c.
References CmiAlloc(), Converse::CmiSyncSendAndFree(), CmiRMA::completed, context, RMAPutMsg::dataport, dataport, nodes_by_pe, put_callback(), putDestHandler, CmiRMA::ready, RMAPutMsg::Saddr, RMAPutMsg::size, RMAPutMsg::sourceId, RMAPutMsg::stat, RMAPutMsg::Taddr, RMAPutMsg::targetId, and CmiRMA::type.
| void CmiPutCb | ( | unsigned int | sourceId, | |
| unsigned int | targetId, | |||
| void * | Saddr, | |||
| void * | Taddr, | |||
| unsigned int | size, | |||
| CmiRdmaCallbackFn | fn, | |||
| void * | param | |||
| ) |
Definition at line 1173 of file machine-gm.c.
References CmiRMA::cb, CmiAlloc(), Converse::CmiSyncSendAndFree(), context, RMAPutMsg::dataport, dataport, CmiCb::fn, nodes_by_pe, CmiCb::param, put_callback(), putDestHandler, CmiRMA::ready, RMAPutMsg::Saddr, RMAPutMsg::size, RMAPutMsg::sourceId, RMAPutMsg::stat, RMAPutMsg::Taddr, RMAPutMsg::targetId, and CmiRMA::type.
| void get_callback_dest | ( | struct gm_port * | p, | |
| void * | context, | |||
| gm_status_t | status | |||
| ) |
Definition at line 1215 of file machine-gm.c.
References CmiAbort(), CmiAlloc(), CmiPrintf(), Converse::CmiSyncSendAndFree(), RMAPutMsg::dataport, nodes_by_pe, RMAPutMsg::Saddr, RMAPutMsg::size, RMAPutMsg::stat, RMAPutMsg::Taddr, and RMAPutMsg::targetId.
| void* CmiGet | ( | unsigned int | sourceId, | |
| unsigned int | targetId, | |||
| void * | Saddr, | |||
| void * | Taddr, | |||
| unsigned int | size | |||
| ) |
Definition at line 1268 of file machine-gm.c.
References CmiAlloc(), Converse::CmiSyncSendAndFree(), CmiRMA::completed, context, RMAPutMsg::dataport, dataport, getDestHandler, nodes_by_pe, CmiRMA::ready, RMAPutMsg::Saddr, RMAPutMsg::size, RMAPutMsg::sourceId, RMAPutMsg::stat, RMAPutMsg::Taddr, RMAPutMsg::targetId, and CmiRMA::type.
| void CmiGetCb | ( | unsigned int | sourceId, | |
| unsigned int | targetId, | |||
| void * | Saddr, | |||
| void * | Taddr, | |||
| unsigned int | size, | |||
| CmiRdmaCallbackFn | fn, | |||
| void * | param | |||
| ) |
Definition at line 1294 of file machine-gm.c.
References CmiRMA::cb, CmiAlloc(), Converse::CmiSyncSendAndFree(), context, RMAPutMsg::dataport, dataport, CmiCb::fn, getDestHandler, nodes_by_pe, CmiCb::param, CmiRMA::ready, RMAPutMsg::Saddr, RMAPutMsg::size, RMAPutMsg::sourceId, RMAPutMsg::stat, RMAPutMsg::Taddr, RMAPutMsg::targetId, and CmiRMA::type.
| int CmiWaitTest | ( | void * | obj | ) |
Definition at line 1321 of file machine-gm.c.
References CmiRMA::completed, CmiRMA::ready, and RMAPutMsg::stat.
| const char* ibv_wc_status_str | ( | enum ibv_wc_status | status | ) |
Definition at line 191 of file machine-ibud.c.
References __ibv_wc_status_str.
Referenced by pollCq().
| void infi_unregAndFreeMeta | ( | void * | md | ) |
Definition at line 225 of file machine-ibud.c.
References free().
Referenced by infi_freeMultipleSend().
| static void * getInfiCmiChunk | ( | int | dataSize | ) | [inline, static] |
Definition at line 232 of file machine-ibud.c.
References infiCmiChunkPool::count, infiCmiChunkMetaDataStruct::count, infiCmiChunkMetaDataStruct::key, malloc(), infiCmiChunkHeaderStruct::metaData, infiCmiChunkMetaDataStruct::nextBuf, infiCmiChunkMetaDataStruct::owner, infiContext::pd, infiCmiChunkMetaDataStruct::poolIdx, infiCmiChunkPool::size, and infiCmiChunkPool::startBuf.
Referenced by infi_CmiAlloc().
| void* infi_CmiAlloc | ( | int | size | ) |
Definition at line 318 of file machine-ibud.c.
References CmiMemLock(), CmiMemUnlock(), getInfiCmiChunk(), and getInfiCmiChunkThread().
Referenced by CmiAlloc().
| void infi_CmiFree | ( | void * | ptr | ) |
this is a part of a received mult message it will be freed correctly later
Definition at line 335 of file machine-ibud.c.
References CmiMemLock(), CmiMemUnlock(), CmiMyRank(), infiCmiChunkPool::count, free(), infi_CmiFreeDirect(), size, and infiCmiChunkPool::startBuf.
Referenced by CmiFree().
| static void initInfiCmiChunkPools | ( | ) | [static] |
There are INFINUMPOOLS of memory.
The first pool is of size firstBinSize. The ith pool is of size firstBinSize*2^i
Definition at line 391 of file machine-ibud.c.
References infiCmiChunkPool::count, infiCmiChunkPool::size, size, and infiCmiChunkPool::startBuf.
| void postInitialRecvs | ( | struct infiBufferPool * | recvBufferPool, | |
| int | numRecvs, | |||
| int | sizePerBuffer | |||
| ) |
Post the buffers as recv work requests.
Definition at line 413 of file machine-ibud.c.
References infiBuffer::buf, infiBufferPool::buffers, free(), infiBuffer::key, malloc(), and infiContext::qp.
Referenced by increasePostedRecvs(), and infiPostInitialRecvs().
| struct infiBufferPool * allocateInfiBufferPool | ( | int | numRecvs, | |
| int | sizePerBuffer | |||
| ) | [read] |
Definition at line 441 of file machine-ibud.c.
References infiBuffer::buf, infiBufferPool::buffers, infiBuffer::key, malloc(), memalign(), infiBufferPool::next, infiBufferPool::numBuffers, page_size, infiContext::pd, infiBuffer::size, and infiBuffer::type.
Referenced by increasePostedRecvs(), and infiPostInitialRecvs().
| static void CommunicationServer_lock | ( | int | toBuffer | ) | [inline, static] |
Definition at line 969 of file machine-ibud.c.
References CmiCommLock(), CmiCommUnlock(), and CommunicationServer_nolock().
| static infiPacket newPacket | ( | ) | [inline, static] |
Definition at line 600 of file machine-ibud.c.
References CmiAlloc(), infiPacketStruct::destNode, infiPacketStruct::elemList, infiContext::header, infiPacketStruct::header, infiPacketStruct::keyHeader, infiPacketStruct::next, infiPacketStruct::ogm, infiPacketStruct::size, and infiPacketStruct::wr.
| static void EnqueuePacket | ( | OtherNode | node, | |
| infiPacket | packet, | |||
| int | size, | |||
| struct ibv_mr * | dataKey | |||
| ) | [inline, static] |
Packetize this data and send it.
Definition at line 625 of file machine-ibud.c.
References _Cmi_mynode, infiPacketStruct::buf, CmiPrintf(), infiPacketStruct::destNode, infiPacketStruct::elemList, OtherNodeStruct::infiData, infiOtherNodeData::nodeNo, infiContext::qp, and infiPacketStruct::wr.
Referenced by EnqueueDataPacket(), EnqueueDummyPacket(), EnqueueRdmaAck(), and EnqueueRdmaPacket().
| static void EnqueueDataPacket | ( | OutgoingMsg | ogm, | |
| char * | data, | |||
| int | size, | |||
| OtherNode | node, | |||
| int | rank, | |||
| int | broot | |||
| ) | [inline, static] |
Definition at line 693 of file machine-ibud.c.
References infiPacketStruct::buf, infiPacketHeader::code, OutgoingMsgStruct::data, EnqueuePacket(), infiPacketStruct::header, infiPacketStruct::ogm, OutgoingMsgStruct::refcount, and infiPacketStruct::size.
| static void handoverMessage | ( | char * | newmsg, | |
| int | total_size, | |||
| int | rank, | |||
| int | broot, | |||
| int | toBuffer | |||
| ) | [inline, static] |
Definition at line 758 of file machine-ibud.c.
References _Cmi_mynodesize, CmiPushNode(), CmiPushPE(), insertBufferedBcast(), SendHypercube(), and SendSpanningChildren().
Referenced by processRdmaWC().
This simple state machine determines if this packet marks the beginning of a new message
if this packet was the last packet in a message ie state was reset to infi_header_data
Definition at line 804 of file machine-ibud.c.
References OtherNodeStruct::asm_fill, OtherNodeStruct::asm_msg, OtherNodeStruct::asm_rank, OtherNodeStruct::asm_total, infiOtherNodeData::broot, Cmi_dgram_max_data, CmiAbort(), CmiAlloc(), CmiPrintf(), INFI_DATA, INFI_HEADER_DATA, OtherNodeStruct::infiData, infiOtherNodeData::nodeNo, nodes, and infiOtherNodeData::state.
| static void processSendWC | ( | struct ibv_wc * | sendWC | ) | [inline] |
| static void processRecvWC | ( | struct ibv_wc * | recvWC, | |
| const int | toBuffer | |||
| ) | [inline] |
Definition at line 877 of file machine-ibud.c.
References infiBuffer::buf, CmiAbort(), infiBuffer::key, processMessage(), infiContext::qp, and infiBuffer::size.
Referenced by pollCq(), and pollRecvCq().
Definition at line 919 of file machine-ibud.c.
References CmiAbort(), ibv_wc_status_str(), processRecvWC(), processSendWC(), and status().
| static uint16_t getLocalLid | ( | struct ibv_context * | dev_context, | |
| int | port | |||
| ) | [static] |
Definition at line 1007 of file machine-ibud.c.
References infiAddr::lid, malloc(), infiAddr::psn, and infiAddr::qpn.
| void createqp | ( | struct ibv_device * | dev | ) |
Definition at line 1251 of file machine-ibud.c.
References CmiAbort(), infiContext::context, getLocalLid(), infiContext::ibPort, infiAddr::lid, infiContext::localAddr, infiContext::pd, infiAddr::psn, infiContext::qp, infiAddr::qpn, infiContext::recvCq, infiContext::recvCqSize, infiContext::sendCq, and infiContext::sendCqSize.
| void createah | ( | ) |
Definition at line 1314 of file machine-ibud.c.
References _Cmi_numnodes, infiContext::ah, infiContext::ibPort, OtherNodeStruct::infiData, infiAddr::lid, malloc(), nodes, infiContext::pd, and infiOtherNodeData::qp.
| void infi_CmiFreeDirect | ( | void * | ptr | ) |
Definition at line 2512 of file machine-ibverbs.c.
References CmiMyRank(), infiCmiChunkPool::count, free(), and infiCmiChunkPool::startBuf.
Referenced by getInfiCmiChunkThread(), and infi_CmiFree().
| static void fillBufferPools | ( | ) | [inline, static] |
Definition at line 2208 of file machine-ibverbs.c.
References infiCmiChunkPool::count, infiCmiChunkMetaDataStruct::count, infiCmiChunkMetaDataStruct::key, malloc(), infiCmiChunkHeaderStruct::metaData, infiCmiChunkMetaDataStruct::nextBuf, infiCmiChunkMetaDataStruct::owner, infiCmiChunkMetaDataStruct::parentPe, infiContext::pd, infiCmiChunkMetaDataStruct::poolIdx, infiCmiChunkPool::size, and infiCmiChunkPool::startBuf.
Definition at line 1351 of file machine-ibverbs.c.
References _Cmi_mynode, CmiAbort(), CmiTimer(), printf(), processBufferedTime, processRdmaWC(), processSendWC(), infiContext::sendCq, status(), and infiContext::tokensLeft.
Referenced by checkAllQps().
| void createLocalQps | ( | struct ibv_device * | dev, | |
| int | ibPort, | |||
| int | myNode, | |||
| int | numNodes, | |||
| struct infiAddr * | localAddr | |||
| ) |
Definition at line 630 of file machine-ibverbs.c.
References infiContext::context, getLocalLid(), infiAddr::lid, malloc(), infiContext::pd, infiAddr::psn, infiContext::qp, infiAddr::qpn, infiContext::recvCq, infiContext::recvCqSize, infiContext::sendCq, infiContext::sendCqSize, infiContext::srq, and infiContext::srqSize.
| static int checkQp | ( | struct ibv_qp * | qp | ) | [static] |
| static void checkAllQps | ( | ) | [static] |
Definition at line 431 of file machine-ibverbs.c.
References _Cmi_mynode, _Cmi_numnodes, checkQp(), nodes, pollSendCq(), and OtherNodeStruct::qp.
| static void send_partial_init | ( | ) | [static] |
Referenced by KillOnAllSigs().
| void copyInfiAddr | ( | ChInfiAddr * | qpList | ) |
Definition at line 718 of file machine-ibverbs.c.
References _Cmi_mynode, _Cmi_numnodes, ChMessageInt_new(), infiAddr::lid, ChInfiAddr::lid, infiContext::localAddr, infiAddr::psn, ChInfiAddr::psn, infiAddr::qpn, and ChInfiAddr::qpn.
Referenced by KillOnAllSigs().
| static void increaseTokens | ( | OtherNode | node | ) | [inline, static] |
Definition at line 2081 of file machine-ibverbs.c.
References _Cmi_mynode, OtherNodeStruct::infiData, infiOtherNodeData::nodeNo, infiContext::sendCq, infiContext::sendCqSize, infiOtherNodeData::tokensLeft, and infiOtherNodeData::totalTokens.
Definition at line 1317 of file machine-ibverbs.c.
References CmiAbort(), processRecvWC(), infiContext::recvCq, and status().
| static void getFreeTokens | ( | struct infiOtherNodeData * | infiData | ) | [inline, static] |
Definition at line 964 of file machine-ibverbs.c.
References CommunicationServer_nolock(), and infiContext::tokensLeft.
Referenced by processRdmaRequest().
Definition at line 1057 of file machine-ibverbs.c.
References infiPacketStruct::buf, CmiAlloc(), infiPacketHeader::code, EnqueuePacket(), infiPacketStruct::header, OtherNodeStruct::infiData, infiOtherNodeData::nodeNo, and infiPacketStruct::size.
| static void EnqueueDataPacket | ( | OutgoingMsg | ogm, | |
| OtherNode | node, | |||
| int | rank, | |||
| char * | data, | |||
| int | size, | |||
| int | broot, | |||
| int | copy | |||
| ) | [inline, static] |
Definition at line 1076 of file machine-ibverbs.c.
References infiPacketStruct::buf, infiPacketHeader::code, OutgoingMsgStruct::data, EnqueuePacket(), infiPacketStruct::header, infiPacketStruct::ogm, OutgoingMsgStruct::refcount, and infiPacketStruct::size.
| static void EnqueueRdmaPacket | ( | OutgoingMsg | ogm, | |
| OtherNode | node | |||
| ) | [inline, static] |
Definition at line 1138 of file machine-ibverbs.c.
References _Cmi_mynode, infiPacketStruct::buf, CmiAlloc(), infiPacketHeader::code, OutgoingMsgStruct::data, EnqueuePacket(), infiPacketStruct::header, OtherNodeStruct::infiData, infiRdmaPacket::key, infiRdmaPacket::keyPtr, infiOtherNodeData::nodeNo, infiPacketHeader::nodeNo, infiRdmaPacket::ogm, infiPacketStruct::ogm, OutgoingMsgStruct::refcount, infiRdmaPacket::remoteBuf, infiRdmaPacket::remoteSize, OutgoingMsgStruct::size, infiPacketStruct::size, and infiRdmaPacket::type.
| static void processAllBufferedMsgs | ( | ) | [inline, static] |
Definition at line 2063 of file machine-ibverbs.c.
References _startTime, CmiWallTimer(), processBufferedBcast(), processBufferedRdmaAcks(), processBufferedRdmaRequests(), and processBufferedTime.
| static void processAsyncEvents | ( | ) | [inline, static] |
Definition at line 1184 of file machine-ibverbs.c.
References _Cmi_mynode, infiContext::asyncFds, CmiAbort(), infiContext::context, printf(), and infiContext::tmo.
| static void pollCmiDirectQ | ( | ) | [static] |
has been received and delete this node
first in the pollingQ
only node in pollingQ
last node is being deleted
Definition at line 3126 of file machine-ibverbs.c.
References CmiPrintf(), directPollingQNodeStruct::handle, headDirectPollingQ, directPollingQNodeStruct::next, receivedDirectMessage(), infiDirectUserHandle::recverBuf, tailDirectPollingQ, and infiDirectHandleStruct::userHandle.
| static void processRdmaWC | ( | struct ibv_wc * | rdmaWC, | |
| const int | toBuffer | |||
| ) | [inline, static] |
Definition at line 1810 of file machine-ibverbs.c.
References infiBuffer::buf, infiContext::bufferedRdmaAcks, EnqueueRdmaAck(), free(), infiRdmaPacket::fromNodeNo, handoverMessage(), infiBuffer::key, infiRdmaPacket::localBuffer, infiRdmaPacket::next, nodes, infiRdmaPacket::prev, and infiContext::tokensLeft.
Referenced by pollSendCq().
Definition at line 1923 of file machine-ibverbs.c.
References infiBufferedBcastStruct::asm_rank, infiBufferedBcastPoolStruct::bcastList, infiBufferedBcastStruct::broot, infiContext::bufferedBcastList, infiBufferedBcastPoolStruct::count, createBcastPool(), infiBufferedBcastStruct::msg, infiBufferedBcastPoolStruct::next, infiBufferedBcastPoolStruct::prev, infiBufferedBcastStruct::size, and infiBufferedBcastStruct::valid.
Referenced by handoverMessage().
| static void increasePostedRecvs | ( | int | nodeNo | ) | [inline, static] |
Definition at line 2099 of file machine-ibverbs.c.
References allocateInfiBufferPool(), OtherNodeStruct::infiData, infiBufferPool::next, nodes, infiOtherNodeData::postedRecvs, postInitialRecvs(), infiContext::recvBufferPool, infiContext::recvCq, infiContext::recvCqSize, and infiContext::srqSize.
| static void processRdmaRequest | ( | struct infiRdmaPacket * | rdmaPacket, | |
| int | fromNodeNo, | |||
| int | isBuffered | |||
| ) | [inline, static] |
post and rdma_read that is a rdma get
Definition at line 1736 of file machine-ibverbs.c.
References infiBuffer::buf, CmiAlloc(), infiRdmaPacket::fromNodeNo, getFreeTokens(), OtherNodeStruct::infiData, infiRdmaPacket::key, infiBuffer::key, infiRdmaPacket::keyPtr, infiRdmaPacket::localBuffer, malloc(), nodes, infiOtherNodeData::qp, infiRdmaPacket::remoteBuf, infiRdmaPacket::remoteSize, infiBuffer::size, infiContext::tokensLeft, and infiBuffer::type.
Referenced by processBufferedRdmaRequests().
| static void processRdmaAck | ( | struct infiRdmaPacket * | rdmaPacket | ) | [inline, static] |
Definition at line 1891 of file machine-ibverbs.c.
References GarbageCollectMsg(), infiRdmaPacket::ogm, OutgoingMsgStruct::refcount, infiRdmaPacket::remoteBuf, and infiRdmaPacket::remoteSize.
| static void EnqueueRdmaAck | ( | struct infiRdmaPacket * | rdmaPacket | ) | [inline, static] |
Definition at line 1869 of file machine-ibverbs.c.
References infiPacketStruct::buf, CmiAlloc(), infiPacketHeader::code, EnqueuePacket(), infiRdmaPacket::fromNodeNo, infiPacketStruct::header, nodes, infiPacketStruct::ogm, and infiPacketStruct::size.
Referenced by processBufferedRdmaAcks(), and processRdmaWC().
| static void processDirectWC | ( | struct infiRdmaPacket * | rdmaPacket | ) | [inline, static] |
| static infiBufferedBcastPool createBcastPool | ( | ) | [inline, static] |
Definition at line 1905 of file machine-ibverbs.c.
References infiBufferedBcastPoolStruct::bcastList, infiBufferedBcastPoolStruct::count, malloc(), infiBufferedBcastPoolStruct::next, infiBufferedBcastPoolStruct::prev, and infiBufferedBcastStruct::valid.
Referenced by insertBufferedBcast().
| static void processBufferedBcast | ( | ) | [inline, static] |
Definition at line 1950 of file machine-ibverbs.c.
References infiBufferedBcastStruct::asm_rank, infiBufferedBcastPoolStruct::bcastList, infiBufferedBcastStruct::broot, infiContext::bufferedBcastList, CmiFree(), infiBufferedBcastPoolStruct::count, free(), infiContext::insideProcessBufferedBcasts, infiBufferedBcastStruct::msg, infiBufferedBcastPoolStruct::next, infiBufferedBcastPoolStruct::prev, SendHypercube(), SendSpanningChildren(), infiBufferedBcastStruct::size, and infiBufferedBcastStruct::valid.
Referenced by processAllBufferedMsgs().
| static void processBufferedRdmaAcks | ( | ) | [inline, static] |
Definition at line 2019 of file machine-ibverbs.c.
References infiContext::bufferedRdmaAcks, EnqueueRdmaAck(), free(), infiRdmaPacket::next, and infiRdmaPacket::prev.
Referenced by processAllBufferedMsgs().
| static void processBufferedRdmaRequests | ( | ) | [inline, static] |
Definition at line 2039 of file machine-ibverbs.c.
References infiContext::bufferedRdmaRequests, infiRdmaPacket::fromNodeNo, infiRdmaPacket::next, infiRdmaPacket::prev, and processRdmaRequest().
Referenced by processAllBufferedMsgs().
| infiCmiChunkMetaData* registerMultiSendMesg | ( | char * | msg, | |
| int | size | |||
| ) | [read] |
Definition at line 2188 of file machine-ibverbs.c.
References infiCmiChunkMetaDataStruct::key, malloc(), infiCmiChunkMetaDataStruct::owner, infiContext::pd, and infiCmiChunkMetaDataStruct::poolIdx.
Referenced by CmiMultiMsgHandler().
| static void* getInfiCmiChunkThread | ( | int | dataSize | ) | [inline, static] |
Definition at line 2262 of file machine-ibverbs.c.
References CmiMyRank(), infiCmiChunkPool::count, infiCmiChunkMetaDataStruct::count, infi_CmiFreeDirect(), infiCmiChunkMetaDataStruct::key, malloc(), infiCmiChunkHeaderStruct::metaData, infiCmiChunkMetaDataStruct::nextBuf, infiCmiChunkMetaDataStruct::owner, infiCmiChunkMetaDataStruct::parentPe, PCQueueEmpty(), PCQueueLength(), PCQueuePop(), infiContext::pd, infiCmiChunkMetaDataStruct::poolIdx, infiCmiChunkPool::size, and infiCmiChunkPool::startBuf.
Referenced by infi_CmiAlloc().
| void addHandleToPollingQ | ( | infiDirectHandle * | handle | ) |
Definition at line 2760 of file machine-ibverbs.c.
References directPollingQNodeStruct::handle, directPollingQNodeStruct::next, and infiDirectHandleStruct::pollingQNode.
Referenced by CmiDirect_createHandle(), CmiDirect_ready(), and CmiDirect_readyPollQ().
| static infiDirectHandleTable** createHandleTable | ( | ) | [inline, static] |
Definition at line 2792 of file machine-ibverbs.c.
References _Cmi_numnodes, and malloc().
Referenced by CmiDirect_assocLocalBuffer(), and CmiDirect_createHandle().
Definition at line 2801 of file machine-ibverbs.c.
Referenced by CmiDirect_assocLocalBuffer(), CmiDirect_createHandle(), CmiDirect_put(), CmiDirect_ready(), and CmiDirect_readyPollQ().
| static void initializeLastDouble | ( | void * | recvBuf, | |
| int | recvBufSize, | |||
| double | initialValue | |||
| ) | [inline, static] |
initialize the last double in the buffer to bufize
Definition at line 2806 of file machine-ibverbs.c.
Referenced by CmiDirect_createHandle(), CmiDirect_ready(), and CmiDirect_readyMark().
| struct infiDirectUserHandle CmiDirect_createHandle | ( | int | senderNode, | |
| void * | recvBuf, | |||
| int | recvBufSize, | |||
| void(*)(void *) | callbackFnPtr, | |||
| void * | callbackData, | |||
| double | initialValue | |||
| ) | [read] |
To be called on the receiver to create a handle and return its number.
Definition at line 2818 of file machine-ibverbs.c.
References _Cmi_mynode, _Cmi_numnodes, addHandleToPollingQ(), infiDirectHandleStruct::buf, calcHandleTableIdx(), infiDirectHandleStruct::callbackData, infiDirectUserHandle::callbackFnPtr, infiDirectHandleStruct::callbackFnPtr, CmiPrintf(), createHandleTable(), infiDirectUserHandle::handle, infiDirectHandleTableStruct::handles, infiDirectHandleStruct::id, idx, initializeLastDouble(), infiDirectUserHandle::initialValue, infiDirectHandleStruct::key, directPollingQNodeStruct::lastDouble, malloc(), infiDirectHandleTableStruct::next, infiContext::pd, infiDirectHandleStruct::pollingQNode, infiDirectUserHandle::recverBuf, infiDirectUserHandle::recverBufSize, infiDirectUserHandle::recverKey, infiDirectUserHandle::recverNode, infiDirectUserHandle::senderNode, infiDirectHandleStruct::size, and infiDirectHandleStruct::userHandle.
| void CmiDirect_assocLocalBuffer | ( | struct infiDirectUserHandle * | userHandle, | |
| void * | sendBuf, | |||
| int | sendBufSize | |||
| ) |
Definition at line 2897 of file machine-ibverbs.c.
References infiDirectHandleStruct::buf, calcHandleTableIdx(), infiDirectHandleStruct::callbackData, infiDirectHandleStruct::callbackFnPtr, CmiAlloc(), CmiMyPe(), CmiPrintf(), createHandleTable(), infiDirectUserHandle::handle, infiDirectHandleTableStruct::handles, infiDirectHandleStruct::id, idx, infiDirectHandleStruct::key, infiRdmaPacket::localBuffer, malloc(), infiDirectHandleTableStruct::next, infiContext::pd, infiDirectHandleStruct::rdmaPacket, infiDirectUserHandle::recverBuf, infiDirectUserHandle::recverBufSize, infiDirectUserHandle::recverNode, sendHandleTable, infiDirectHandleStruct::size, infiRdmaPacket::type, and infiDirectHandleStruct::userHandle.
| void CmiDirect_put | ( | struct infiDirectUserHandle * | userHandle | ) |
find entry for this handle in recver table
post and rdma_read that is a rdma get
Definition at line 2964 of file machine-ibverbs.c.
References _Cmi_mynode, OtherNodeStruct::addr, infiDirectHandleStruct::buf, calcHandleTableIdx(), CmiMyPe(), CmiPrintf(), infiDirectUserHandle::handle, infiDirectHandleTableStruct::handles, idx, OtherNodeStruct::infiData, infiDirectHandleStruct::key, infiDirectHandleTableStruct::next, nodes, infiOtherNodeData::qp, infiDirectHandleStruct::rdmaPacket, infiDirectUserHandle::recverBuf, infiDirectUserHandle::recverKey, infiDirectUserHandle::recverNode, recvHandleTable, sendHandleTable, infiDirectHandleStruct::size, and infiDirectHandleStruct::userHandle.
| void CmiDirect_readyMark | ( | struct infiDirectUserHandle * | userHandle | ) |
Definition at line 3066 of file machine-ibverbs.c.
References initializeLastDouble(), infiDirectUserHandle::initialValue, infiDirectUserHandle::recverBuf, and infiDirectUserHandle::recverBufSize.
| void CmiDirect_readyPollQ | ( | struct infiDirectUserHandle * | userHandle | ) |
Definition at line 3071 of file machine-ibverbs.c.
References addHandleToPollingQ(), calcHandleTableIdx(), CmiPrintf(), infiDirectUserHandle::handle, infiDirectHandleTableStruct::handles, idx, infiDirectHandleTableStruct::next, infiDirectUserHandle::recverBuf, recvHandleTable, and infiDirectUserHandle::senderNode.
| void CmiDirect_ready | ( | struct infiDirectUserHandle * | userHandle | ) |
Definition at line 3091 of file machine-ibverbs.c.
References addHandleToPollingQ(), calcHandleTableIdx(), CmiPrintf(), infiDirectUserHandle::handle, infiDirectHandleTableStruct::handles, idx, initializeLastDouble(), infiDirectUserHandle::initialValue, infiDirectHandleTableStruct::next, infiDirectUserHandle::recverBuf, infiDirectUserHandle::recverBufSize, recvHandleTable, and infiDirectUserHandle::senderNode.
| static int receivedDirectMessage | ( | infiDirectHandle * | handle | ) | [static] |
Definition at line 3113 of file machine-ibverbs.c.
References infiDirectHandleStruct::callbackData, infiDirectHandleStruct::callbackFnPtr, infiDirectUserHandle::initialValue, directPollingQNodeStruct::lastDouble, infiDirectHandleStruct::pollingQNode, and infiDirectHandleStruct::userHandle.
Referenced by pollCmiDirectQ().
| static const char * getErrorMsg | ( | mx_return_t | rc | ) | [static] |
Definition at line 914 of file machine-mx.c.
| static void processStatusCode | ( | mx_status_t | status | ) | [static] |
| static void PumpMsgs | ( | int | getone | ) | [static] |
Definition at line 491 of file machine.c.
References CmiAlloc(), CmiFree(), CmiHandleImmediate(), CmiPushPE(), CmiWallTimer(), elan_base, elan_port, elarge, emid, esmall, handleGetHeader(), msg, PumpPersistent(), SendSpanningChildren(), size, tag, and traceUserBracketEvent().
Referenced by CmiGetNonLocal(), CmiNotifyIdle(), CmiNotifyStillIdle(), CmiPing(), CmiProbeImmediateMsg(), CommunicationServer(), ConverseExit(), ConverseRunPE(), elan_barrier(), elan_machine_allreduce(), elan_machine_broadcast(), elan_machine_reduce(), and ElanSendFn().
| static void ReleaseSentMsgs | ( | void | ) | [static] |
Definition at line 385 of file machine-mx.c.
References PendingSentMsgStruct::handle, and PendingSentMsgStruct::next.
| static void PumpEvents | ( | int | getone | ) | [static] |
Definition at line 281 of file machine-mx.c.
References CmiAbort(), CmiFree(), CmiPrintf(), PendingSentMsgStruct::data, endpoint, PendingSentMsgStruct::flag, GarbageCollectMsg(), getErrorMsg(), PendingSentMsgStruct::ogm, processMessage(), and OutgoingMsgStruct::refcount.
| void recv_callback | ( | void * | context, | |
| uint64_t | match_info, | |||
| int | length | |||
| ) |
Definition at line 332 of file machine-mx.c.
References CmiAbort(), CmiAlloc(), CmiPrintf(), PendingSentMsgStruct::data, endpoint, PendingSentMsgStruct::flag, getErrorMsg(), MATCH_FILTER, MATCH_MASK, processMessage(), and processStatusCode().
| void processFutureMessages | ( | OtherNode | node | ) |
Definition at line 459 of file machine-mx.c.
References CdsFifo_Dequeue(), CdsFifo_Empty(), CdsFifo_Length(), CmiMyPe(), CmiPrintf(), free(), OtherNodeStruct::futureMsgs, FutureMessageStruct::len, FutureMessageStruct::msg, and processMessage().
| void EnqueueOutgoingDgram | ( | OutgoingMsg | ogm, | |
| char * | ptr, | |||
| int | dlen, | |||
| OtherNode | node, | |||
| int | rank, | |||
| int | broot, | |||
| int | copy | |||
| ) |
Definition at line 615 of file machine-mx.c.
References CmiAbort(), CmiMyPe(), computeCheckSum(), data, endpoint, OtherNodeStruct::endpoint_addr, PendingSentMsgStruct::flag, PendingSentMsgStruct::handle, head, DgramHeader::magic, MATCH_FILTER, nodes, OutgoingMsgStruct::refcount, OtherNodeStruct::send_next, and OutgoingMsgStruct::src.
| void CmiMXMakeConnection | ( | ) |
Definition at line 893 of file machine-mx.c.
References _Cmi_numnodes, CmiAbort(), CmiMyPe(), CmiPrintf(), endpoint, endpoint_addr, machine_exit(), MX_FILTER, nodes, and skt_print_ip().
| void calculateNodeSizeAndRank | ( | char ** | argv | ) |
Definition at line 323 of file machine-sysvshm.c.
References _Cmi_mynode, _Cmi_numnodes, CmiGetArgIntDesc(), SysvshmContext::nodeend, SysvshmContext::noderank, SysvshmContext::nodesize, and SysvshmContext::nodestart.
Referenced by CmiInitPxshm(), CmiInitSysvshm(), and CmiSendMessagePxshm().
| void setupSharedBuffers | ( | ) |
Definition at line 357 of file machine-sysvshm.c.
References sharedBufHeader::bytes, sharedBufHeader::count, createShmObjectsAndSems(), sharedBufData::header, malloc(), SysvshmContext::noderank, SysvshmContext::nodesize, SysvshmContext::recvbufnames, SysvshmContext::recvBufs, SysvshmContext::semarray, SysvshmContext::sendbufnames, and SysvshmContext::sendBufs.
Referenced by CmiInitPxshm(), CmiInitSysvshm(), and CmiSendMessagePxshm().
| void initAllSendQs | ( | ) |
Definition at line 459 of file machine-sysvshm.c.
References initSendQ(), malloc(), SysvshmContext::noderank, SysvshmContext::nodesize, and SysvshmContext::sendQs.
Referenced by CmiInitPxshm(), CmiInitSysvshm(), and CmiSendMessagePxshm().
| void CmiInitPxshm | ( | char ** | argv | ) |
Definition at line 174 of file machine-pxshm.c.
References calculateNodeSizeAndRank(), CmiAbort(), PxshmContext::commServerTime, initAllSendQs(), PxshmContext::lockRecvCount, malloc(), PxshmContext::nodesize, PxshmContext::prefixStr, PxshmContext::sendCount, PxshmContext::sendTime, setupSharedBuffers(), PxshmContext::validCheckCount, and PxshmContext::validCheckTime.
Referenced by KillOnAllSigs().
| void tearDownSharedBuffers | ( | ) |
Definition at line 436 of file machine-sysvshm.c.
References sharedBufData::header, SysvshmContext::noderank, SysvshmContext::nodesize, SysvshmContext::recvBufs, sharedBufData::semid, SysvshmContext::sendBufs, and sharedBufData::shmid.
Referenced by CmiExitPxshm(), CmiExitSysvshm(), CmiSendMessagePxshm(), createShmObjectsAndSems(), and machine_exit().
| void CmiExitPxshm | ( | ) |
Definition at line 222 of file machine-pxshm.c.
References _Cmi_mynode, CmiPrintf(), PxshmContext::commServerTime, free(), PxshmContext::lockRecvCount, PxshmContext::noderank, PxshmContext::nodesize, PxshmContext::recvBufNames, PxshmContext::recvBufs, PxshmContext::sendBufNames, PxshmContext::sendBufs, PxshmContext::sendCount, PxshmContext::sendTime, tearDownSharedBuffers(), PxshmContext::validCheckCount, and PxshmContext::validCheckTime.
Referenced by KillOnAllSigs().
| int CmiValidPxshm | ( | OutgoingMsg | ogm, | |
| OtherNode | node | |||
| ) | [inline] |
Definition at line 252 of file machine-pxshm.c.
References OutgoingMsgStruct::dst, PxshmContext::nodeend, PxshmContext::nodestart, OutgoingMsgStruct::size, and PxshmContext::validCheckCount.
Referenced by KillOnAllSigs().
Definition at line 269 of file machine-pxshm.c.
References PxshmContext::nodestart.
Referenced by CmiSendMessagePxshm().
| void pushSendQ | ( | PxshmSendQ * | q, | |
| OutgoingMsg | msg | |||
| ) | [inline] |
Referenced by CmiSendMessagePxshm(), CmiSendMessageSysvshm(), and sendMessage().
| int sendMessage | ( | OutgoingMsg | ogm, | |
| sharedBufData * | dstBuf, | |||
| PxshmSendQ * | dstSendQ | |||
| ) | [inline] |
Referenced by CmiSendMessagePxshm(), CmiSendMessageSysvshm(), and flushSendQ().
Definition at line 506 of file machine-sysvshm.c.
References GarbageCollectMsg(), SysvshmSendQ::numEntries, popSendQ(), OutgoingMsgStruct::refcount, SysvshmContext::sendBufs, sendMessage(), SysvshmContext::sendQs, and OutgoingMsgStruct::size.
Referenced by CmiSendMessagePxshm(), CmiSendMessageSysvshm(), and flushAllSendQs().
| void CmiSendMessagePxshm | ( | OutgoingMsg | ogm, | |
| OtherNode | node, | |||
| int | rank, | |||
| unsigned int | broot | |||
| ) |
failed to get the lock insert into q and retain the message
copy this message to sharedBuf
Definition at line 284 of file machine-pxshm.c.
References _Cmi_mynode, _Cmi_numnodes, PxshmSendQ::begin, sharedBufHeader::bytes, calculateNodeSizeAndRank(), CmiAlloc(), CmiGetArgIntDesc(), CmiMemoryCheck(), CmiNotifyStillIdle(), CmiPushPE(), CmiWallTimer(), PxshmContext::commServerTime, CommunicationServerPxshm(), sharedBufHeader::count, createShmObjectsAndSems(), PxshmSendQ::data, sharedBufData::data, OutgoingMsgStruct::data, OutgoingMsgStruct::dst, emptyAllRecvBufs(), emptyRecvBuf(), PxshmSendQ::end, errno, sharedBufHeader::flagReceiver, sharedBufHeader::flagSender, flushAllSendQs(), flushSendQ(), free(), GarbageCollectMsg(), sharedBufData::header, initAllSendQs(), initSendQ(), sharedBufHeader::lock, PxshmContext::lockRecvCount, malloc(), msg, sharedBufData::mutex, PxshmContext::nodeend, PxshmContext::noderank, PxshmContext::nodesize, PxshmContext::nodestart, PxshmSendQ::numEntries, popSendQ(), PxshmContext::prefixStr, printf(), ptr, pushSendQ(), PxshmRank(), RECEIVER, PxshmContext::recvBufNames, PxshmContext::recvBufs, OutgoingMsgStruct::refcount, s, PxshmContext::sendBufNames, PxshmContext::sendBufs, PxshmContext::sendCount, SENDER, SendHypercube(), sendMessage(), PxshmContext::sendQs, SendSpanningChildren(), PxshmContext::sendTime, setupSharedBuffers(), PxshmSendQ::size, size, OutgoingMsgStruct::size, OutgoingMsgStruct::src, tearDownSharedBuffers(), and sharedBufHeader::turn.
Referenced by KillOnAllSigs().
| void CmiInitSysvshm | ( | char ** | argv | ) |
Definition at line 136 of file machine-sysvshm.c.
References calculateNodeSizeAndRank(), CmiAbort(), SysvshmContext::commServerTime, initAllSendQs(), SysvshmContext::lockRecvCount, malloc(), SysvshmContext::nodesize, SysvshmContext::sendCount, SysvshmContext::sendTime, setupSharedBuffers(), SysvshmContext::validCheckCount, and SysvshmContext::validCheckTime.
Referenced by KillOnAllSigs().
| void CmiExitSysvshm | ( | ) |
Definition at line 177 of file machine-sysvshm.c.
References _Cmi_mynode, CmiPrintf(), SysvshmContext::commServerTime, free(), SysvshmContext::lockRecvCount, SysvshmContext::nodesize, SysvshmContext::recvbufnames, SysvshmContext::recvBufs, SysvshmContext::semarray, SysvshmContext::sendbufnames, SysvshmContext::sendBufs, SysvshmContext::sendCount, SysvshmContext::sendTime, tearDownSharedBuffers(), SysvshmContext::validCheckCount, and SysvshmContext::validCheckTime.
Referenced by KillOnAllSigs().
| int CmiValidSysvshm | ( | OutgoingMsg | ogm, | |
| OtherNode | node | |||
| ) | [inline] |
Definition at line 202 of file machine-sysvshm.c.
References OutgoingMsgStruct::dst, SysvshmContext::nodeend, SysvshmContext::nodestart, OutgoingMsgStruct::size, and SysvshmContext::validCheckCount.
Referenced by KillOnAllSigs().
Definition at line 215 of file machine-sysvshm.c.
References SysvshmContext::nodestart.
Referenced by CmiSendMessageSysvshm().
| void pushSendQ | ( | SysvshmSendQ * | q, | |
| OutgoingMsg | msg | |||
| ) | [inline] |
Definition at line 657 of file machine-sysvshm.c.
References SysvshmSendQ::begin, SysvshmSendQ::data, SysvshmSendQ::end, free(), malloc(), SysvshmSendQ::numEntries, and SysvshmSendQ::size.
| int sendMessage | ( | OutgoingMsg | ogm, | |
| sharedBufData * | dstBuf, | |||
| SysvshmSendQ * | dstSendQ | |||
| ) | [inline] |
copy this message to sharedBuf
Definition at line 479 of file machine-sysvshm.c.
References sharedBufHeader::bytes, sharedBufHeader::count, OutgoingMsgStruct::data, sharedBufData::data, sharedBufData::header, printf(), pushSendQ(), OutgoingMsgStruct::refcount, and OutgoingMsgStruct::size.
| void CmiSendMessageSysvshm | ( | OutgoingMsg | ogm, | |
| OtherNode | node, | |||
| int | rank, | |||
| unsigned int | broot | |||
| ) |
failed to get the lock insert into q and retain the message
Definition at line 230 of file machine-sysvshm.c.
References CmiMemoryCheck(), CmiWallTimer(), OutgoingMsgStruct::data, OutgoingMsgStruct::dst, flushSendQ(), SysvshmContext::noderank, SysvshmSendQ::numEntries, pushSendQ(), OutgoingMsgStruct::refcount, sharedBufData::semid, SysvshmContext::sendBufs, SysvshmContext::sendCount, sendMessage(), SysvshmContext::sendQs, SysvshmContext::sendTime, OutgoingMsgStruct::size, OutgoingMsgStruct::src, and SysvshmRank().
Referenced by KillOnAllSigs().
| void emptyAllRecvBufs | ( | ) | [inline] |
Definition at line 527 of file machine-sysvshm.c.
References sharedBufHeader::count, emptyRecvBuf(), sharedBufData::header, SysvshmContext::lockRecvCount, SysvshmContext::noderank, SysvshmContext::nodesize, SysvshmContext::recvBufs, and sharedBufData::semid.
Referenced by CmiSendMessagePxshm(), and CommunicationServerSysvshm().
| void flushAllSendQs | ( | ) | [inline] |
Definition at line 558 of file machine-sysvshm.c.
References flushSendQ(), SysvshmContext::noderank, SysvshmContext::nodesize, SysvshmSendQ::numEntries, sharedBufData::semid, SysvshmContext::sendBufs, and SysvshmContext::sendQs.
Referenced by CmiSendMessagePxshm(), and CommunicationServerSysvshm().
| static void CmiNotifyStillIdleSysvshm | ( | CmiIdleState * | s | ) | [static] |
Definition at line 312 of file machine-sysvshm.c.
References CommunicationServerSysvshm().
Referenced by KillOnAllSigs().
| static void CmiNotifyBeginIdleSysvshm | ( | CmiIdleState * | s | ) | [static] |
Definition at line 317 of file machine-sysvshm.c.
References CmiNotifyStillIdle().
Referenced by KillOnAllSigs().
| void createShmObjectsAndSems | ( | sharedBufData ** | bufs, | |
| int * | bufnames, | |||
| int | issend | |||
| ) |
Definition at line 387 of file machine-sysvshm.c.
References CmiAbort(), CmiPrintf(), errno, malloc(), SysvshmContext::noderank, SysvshmContext::nodesize, SysvshmContext::semarray, and tearDownSharedBuffers().
Referenced by CmiSendMessagePxshm(), and setupSharedBuffers().
| void initSendQ | ( | SysvshmSendQ * | q, | |
| int | size | |||
| ) |
Definition at line 647 of file machine-sysvshm.c.
References SysvshmSendQ::begin, SysvshmSendQ::data, SysvshmSendQ::end, malloc(), SysvshmSendQ::numEntries, and SysvshmSendQ::size.
Referenced by CmiSendMessagePxshm(), and initAllSendQs().
| OutgoingMsg popSendQ | ( | SysvshmSendQ * | q | ) | [inline] |
Definition at line 686 of file machine-sysvshm.c.
References SysvshmSendQ::begin, SysvshmSendQ::data, SysvshmSendQ::numEntries, and SysvshmSendQ::size.
Referenced by CmiSendMessagePxshm(), and flushSendQ().
| void emptyRecvBuf | ( | sharedBufData * | recvBuf | ) | [inline] |
Definition at line 578 of file machine-sysvshm.c.
References sharedBufHeader::bytes, CmiAlloc(), sharedBufHeader::count, sharedBufData::data, handoverSysvshmMessage(), sharedBufData::header, msg, ptr, and size.
Referenced by CmiSendMessagePxshm(), and emptyAllRecvBufs().
| static void handoverSysvshmMessage | ( | char * | newmsg, | |
| int | total_size, | |||
| int | rank, | |||
| int | broot | |||
| ) | [inline, static] |
Definition at line 609 of file machine-sysvshm.c.
References CmiPushPE(), SendHypercube(), and SendSpanningChildren().
Referenced by emptyRecvBuf().
| void ReceiveDatagram | ( | int | node | ) |
Definition at line 430 of file machine-tcp.c.
| int TransmitDatagram | ( |