arch/net/machine-ibverbs.c File Reference

size = CmiMsgHeaderGetLength(msg); Ibverbs (infiniband) implementation of Converse NET version More...

Go to the source code of this file.

Data Structures

struct  infiIncTokenAckPacket
struct  CmiIdleState
struct  infiPacketHeader
struct  infiRdmaPacket
struct  infiBuffer
struct  infiBufferPool
 At the moment it is a simple pool with just a list of buffers TODO; extend it to make it an element in a linklist of pools. More...
struct  infiPacketStruct
struct  infiBufferedBcastStruct
struct  infiBufferedBcastPoolStruct
struct  infiContext
struct  infiAddr
 Represents a qp used to send messages to another node There is one for each remote node. More...
struct  infiOtherNodeData
struct  infiCmiChunkMetaDataStruct
struct  infiCmiChunkPool
struct  infiDirectRequestPacket
struct  directPollingQNodeStruct
struct  infiDirectHandleStruct
struct  infiDirectHandleTableStruct

Typedefs

typedef infiPacketStructinfiPacket
typedef infiBufferedBcastPoolStructinfiBufferedBcastPool
typedef infiCmiChunkMetaDataStruct infiCmiChunkMetaData
typedef directPollingQNodeStruct directPollingQNode
typedef infiDirectHandleStruct infiDirectHandle
typedef infiDirectHandleTableStruct infiDirectHandleTable

Enumerations

enum  { INFI_HEADER_DATA = 21, INFI_DATA }
 Stored in the OtherNode structure in machine-dgram.c Store the per node data for ibverbs layer. More...

Functions

static CmiIdleStateCmiNotifyGetState (void)
static void CmiNotifyStillIdle (CmiIdleState *s)
static void CmiNotifyBeginIdle (CmiIdleState *s)
void CmiNotifyIdle (void)
static void initInfiCmiChunkPools ()
 There are INFINUMPOOLS of memory.
static infiPacket newPacket ()
static int pollSendCq (const int toBuffer)
void createLocalQps (struct ibv_device *dev, int ibPort, int myNode, int numNodes, struct infiAddr *localAddr)
static uint16_t getLocalLid (struct ibv_context *context, int port)
static int checkQp (struct ibv_qp *qp)
static void checkAllQps ()
static void send_partial_init ()
void CmiMachineInit (char **argv)
void CmiCommunicationInit (char **argv)
void copyInfiAddr (ChInfiAddr *qpList)
infiBufferPoolallocateInfiBufferPool (int numRecvs, int sizePerBuffer)
void postInitialRecvs (struct infiBufferPool *recvBufferPool, int numRecvs, int sizePerBuffer)
 Post the buffers as recv work requests.
infiOtherNodeDatainitInfiOtherNodeData (int node, int addr[3])
void infiPostInitialRecvs ()
static void CommunicationServer_nolock (int withDelayMs)
void CmiMachineExit ()
static void ServiceCharmrun_nolock ()
static void increaseTokens (OtherNode node)
static int pollRecvCq (const int toBuffer)
static void getFreeTokens (struct infiOtherNodeData *infiData)
static void EnqueuePacket (OtherNode node, infiPacket packet, int size, struct ibv_mr *dataKey)
 Packetize this data and send it.
static void EnqueueDummyPacket (OtherNode node, int size)
static void EnqueueDataPacket (OutgoingMsg ogm, OtherNode node, int rank, char *data, int size, int broot, int copy)
static void EnqueueRdmaPacket (OutgoingMsg ogm, OtherNode node)
static void processAllBufferedMsgs ()
void DeliverViaNetwork (OutgoingMsg ogm, OtherNode node, int rank, unsigned int broot, int copy)
static void processRecvWC (struct ibv_wc *recvWC, const int toBuffer)
static void processSendWC (struct ibv_wc *sendWC)
static void processAsyncEvents ()
static void pollCmiDirectQ ()
static void processRdmaWC (struct ibv_wc *rdmaWC, const int toBuffer)
int CheckSocketsReady (int withDelayMs)
static void CommunicationServer (int sleepTime, int where)
static void insertBufferedBcast (char *msg, int size, int broot, int asm_rank)
static void handoverMessage (char *newmsg, int total_size, int rank, int broot, int toBuffer)
static void processMessage (int nodeNo, int len, char *msg, const int toBuffer)
static void increasePostedRecvs (int nodeNo)
static void processRdmaRequest (struct infiRdmaPacket *rdmaPacket, int fromNodeNo, int isBuffered)
static void processRdmaAck (struct infiRdmaPacket *rdmaPacket)
static void EnqueueRdmaAck (struct infiRdmaPacket *rdmaPacket)
static void processDirectWC (struct infiRdmaPacket *rdmaPacket)
static infiBufferedBcastPool createBcastPool ()
static void processBufferedBcast ()
static void processBufferedRdmaAcks ()
static void processBufferedRdmaRequests ()
infiCmiChunkMetaDataregisterMultiSendMesg (char *msg, int size)
static void * getInfiCmiChunkThread (int dataSize)
static void * getInfiCmiChunk (int dataSize)
void * infi_CmiAlloc (int size)
void infi_CmiFreeDirect (void *ptr)
void infi_CmiFree (void *ptr)
void addHandleToPollingQ (infiDirectHandle *handle)
static infiDirectHandleTable ** createHandleTable ()
static void calcHandleTableIdx (int handle, int *tableIdx, int *idx)
static void initializeLastDouble (void *recvBuf, int recvBufSize, double initialValue)
infiDirectUserHandle CmiDirect_createHandle (int senderNode, void *recvBuf, int recvBufSize, void(*callbackFnPtr)(void *), void *callbackData, double initialValue)
 To be called on the receiver to create a handle and return its number.
void CmiDirect_assocLocalBuffer (struct infiDirectUserHandle *userHandle, void *sendBuf, int sendBufSize)
void CmiDirect_put (struct infiDirectUserHandle *userHandle)
void CmiDirect_readyMark (struct infiDirectUserHandle *userHandle)
void CmiDirect_readyPollQ (struct infiDirectUserHandle *userHandle)
void CmiDirect_ready (struct infiDirectUserHandle *userHandle)
static int receivedDirectMessage (infiDirectHandle *handle)
static void sendBarrierMessage (int pe)
static void recvBarrierMessage ()
int CmiBarrier ()
int CmiBarrierZero ()

Variables

enum ibv_mtu mtu = IBV_MTU_2048
static int page_size
static int mtu_size
static int packetSize
static int dataSize
static int rdma
static int rdmaThreshold
static int firstBinSize
static int blockAllocRatio
static int blockThreshold
static int maxRecvBuffers
static int maxTokens
static int sendPacketPoolSize
static double _startTime = 0
static int regCount
static int pktCount
static int msgCount
static int minTokensLeft
static double regTime
static double processBufferedTime
static int processBufferedCount
PCQueue ** queuePool
static int TESTneighbor
static int TESTfrees
static struct infiContextcontext
infiCmiChunkPool ** infiCmiChunkPools
static unsigned int _count = 0
int errno
static int _countAsync = 0
directPollingQNodeheadDirectPollingQ = NULL
directPollingQNodetailDirectPollingQ = NULL
static infiDirectHandleTable ** sendHandleTable = NULL
static infiDirectHandleTable ** recvHandleTable = NULL
static intrecvHandleCount = NULL


Detailed Description

size = CmiMsgHeaderGetLength(msg); Ibverbs (infiniband) implementation of Converse NET version

contains only Ibverbs specific code for:

created by Sayantan Chakravorty, sayantan@gmail.com ,21st March 2007

Definition in file machine-ibverbs.c.


Generated on Sun Jun 29 13:29:32 2008 for Charm++ by  doxygen 1.5.1