Skip to content
Snippets Groups Projects
Commit 010f2f2a authored by Thomas Jahns's avatar Thomas Jahns :cartwheel: Committed by Sergey Kosukhin
Browse files

Fix alignment of buffered float data.

parent 1517e343
No related branches found
No related tags found
No related merge requests found
......@@ -224,8 +224,8 @@ modelWinEnqueue(size_t streamIdx, struct winHeaderEntry header, const void *data
targetEntry = txWin[streamIdx].dictSize - ++(txWin[streamIdx].dictRPCUsed);
if (header.id > 0)
{
int offset = header.offset
= (int) roundUpToMultiple((size_t) (txWin[streamIdx].head - txWin[streamIdx].buffer), PIO_WIN_ALIGN);
size_t alignTo = header.id == DATA_HEADER_DOUBLE ? sizeof(double) : sizeof(float);
int offset = header.offset = (int) roundUpToMultiple((size_t) (txWin[streamIdx].head - txWin[streamIdx].buffer), alignTo);
MPI_Comm comm = cdiPioInqInterComm();
packFunc((void *) data, txWin[streamIdx].buffer, (int) txWin[streamIdx].size, &offset, &comm);
txWin[streamIdx].head = txWin[streamIdx].buffer + offset;
......
......@@ -294,7 +294,7 @@ buildVarXmap(struct Xt_offset_ext *restrict partExts, const struct clientBuf *re
}
unsigned partSize = (unsigned) xt_idxlist_get_num_indices(part[clientIdx]);
size_t charOfs = (size_t) ((clientMem + ((wHECast) clientMem)[headerIdx].offset) - clientBuf[0].mem);
xassert(charOfs % PIO_WIN_ALIGN == 0 && charOfs / elemSize + partSize <= INT_MAX);
xassert(charOfs % elemSize == 0 && charOfs / elemSize + partSize <= INT_MAX);
int elemOfs = (int) (charOfs / elemSize);
partExts[clientIdx].start = elemOfs;
partExts[clientIdx].size = (int) partSize;
......@@ -742,7 +742,7 @@ buildVarRedist(int headerIdx, size_t streamIdx,
xassert(dataHeader->varID == varID && ((wHECast) clientMem)[headerIdx].id == conversion);
size_t charOfs = (size_t) ((clientMem + ((wHECast) clientMem)[headerIdx].offset) - clientBuf[0].mem);
int partSize = partSizes[clientIdx + 1];
xassert(charOfs % PIO_WIN_ALIGN == 0 && charOfs / elemSize + (size_t) partSize <= INT_MAX);
xassert(charOfs % elemSize == 0 && charOfs / elemSize + (size_t) partSize <= INT_MAX);
int elemOfs = (int) (charOfs / elemSize);
partExts[clientIdx].start = elemOfs;
partExts[clientIdx].size = partSize;
......
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