Skip to content
Snippets Groups Projects
Commit b7ac8949 authored by Thomas Jahns's avatar Thomas Jahns :cartwheel:
Browse files

Extract function to setup server-side buffer.

parent 7cd4c204
No related branches found
No related tags found
No related merge requests found
......@@ -171,6 +171,29 @@ setupClientRanks(void)
Free(ranks);
}
static void
createStreamWin(size_t streamIdx, MPI_Info no_locks_info,
MPI_Comm collClientIntraComm, struct clientBufSize *bufSizes)
{
rxWin[streamIdx].clientBuf
= Malloc((size_t)numClients_ * sizeof (rxWin[streamIdx].clientBuf[0]));
xmpi(MPI_Win_create(MPI_BOTTOM, 0, 1, no_locks_info, collClientIntraComm,
&rxWin[streamIdx].getWin));
size_t streamBufferSize = 0;
for (size_t i = 0; i < (size_t)numClients_; ++i)
{
streamBufferSize +=
(rxWin[streamIdx].clientBuf[i].size = bufSizes[i].bufSize);
rxWin[streamIdx].clientBuf[i].dictSize
= bufSizes[i].numDataRecords + bufSizes[i].numRPCRecords;
}
rxWin[streamIdx].clientBuf[0].mem = Malloc(streamBufferSize);
for (size_t i = 1; i < (size_t)numClients_; ++i)
rxWin[streamIdx].clientBuf[i].mem
= rxWin[streamIdx].clientBuf[i-1].mem + bufSizes[i-1].bufSize;
}
static void
serverWinCreate(void)
{
......@@ -186,29 +209,9 @@ serverWinCreate(void)
struct clientBufSize (*bufSizes)[numClients_]
= (struct clientBufSize (*)[numClients_])setup.bufSizes;
for (size_t streamIdx = 0; streamIdx < openStreams.size; ++streamIdx)
{
rxWin[streamIdx].clientBuf
= Malloc((size_t)numClients_ * sizeof (rxWin[streamIdx].clientBuf[0]));
if (openStreams.entries[streamIdx] != CDI_UNDEFID) { } else
continue;
xmpi(MPI_Win_create(MPI_BOTTOM, 0, 1, no_locks_info, collClientIntraComm,
&rxWin[streamIdx].getWin));
size_t streamBufferSize = 0;
for (size_t i = 0; i < (size_t)numClients_; ++i)
{
streamBufferSize +=
(rxWin[streamIdx].clientBuf[i].size
= bufSizes[streamIdx][i].bufSize);
rxWin[streamIdx].clientBuf[i].dictSize
= bufSizes[streamIdx][i].numDataRecords
+ bufSizes[streamIdx][i].numRPCRecords;
}
rxWin[streamIdx].clientBuf[0].mem = Malloc(streamBufferSize);
for (size_t i = 1; i < (size_t)numClients_; ++i)
rxWin[streamIdx].clientBuf[i].mem = rxWin[streamIdx].clientBuf[i-1].mem
+ bufSizes[streamIdx][i-1].bufSize;
}
if (openStreams.entries[streamIdx] != CDI_UNDEFID)
createStreamWin(streamIdx, no_locks_info, collClientIntraComm,
bufSizes[streamIdx]);
xmpi(MPI_Info_free(&no_locks_info));
Free(setup.bufSizes);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment