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

Also rename index list cache interface functions.

parent 0dbaa3b1
No related branches found
No related tags found
No related merge requests found
......@@ -16,12 +16,12 @@ enum {
};
#define MAX_CACHE_SIZE ((((size_t)1) << LRAND48_BITS) - 1)
enum cdiPioDstIdxlistType
enum cdiPioIdxlistType
{
CDIPIO_DSTIDXLISTTYPE_EMPTY,
CDIPIO_DSTIDXLISTTYPE_SECTION2D,
CDIPIO_DSTIDXLISTTYPE_SECTION3D,
CDIPIO_DSTIDXLISTTYPE_STRIPES1,
CDIPIO_IDXLISTTYPE_EMPTY,
CDIPIO_IDXLISTTYPE_SECTION2D,
CDIPIO_IDXLISTTYPE_SECTION3D,
CDIPIO_IDXLISTTYPE_STRIPES1,
};
struct sectionNDDesc
......@@ -38,7 +38,7 @@ struct stripes1Desc
struct idxlistDesc
{
enum cdiPioDstIdxlistType type;
enum cdiPioIdxlistType type;
union
{
struct sectionNDDesc sectionND;
......@@ -53,7 +53,7 @@ struct cdiPioIdxlistCache {
};
struct cdiPioIdxlistCache *
cdiPioDstIdxlistCacheNew(size_t sizeEntries)
cdiPioIdxlistCacheNew(size_t sizeEntries)
{
if (sizeEntries > MAX_CACHE_SIZE)
xabort("cache cannot hold more than %zu entries", MAX_CACHE_SIZE);
......@@ -64,18 +64,18 @@ cdiPioDstIdxlistCacheNew(size_t sizeEntries)
cache->numEntries = 0;
struct idxlistDesc *restrict entries = cache->entries;
for (size_t i = 0; i < sizeEntries; ++i)
entries[i].type = CDIPIO_DSTIDXLISTTYPE_EMPTY;
entries[i].type = CDIPIO_IDXLISTTYPE_EMPTY;
return cache;
}
size_t
cdiPioDstIdxlistCacheGetSize(struct cdiPioIdxlistCache *cache)
cdiPioIdxlistCacheGetSize(struct cdiPioIdxlistCache *cache)
{
return cache ? cache->size : 0;
}
struct cdiPioIdxlistCache *
cdiPioDstIdxlistCacheResize(struct cdiPioIdxlistCache *cache, size_t sizeEntries)
cdiPioIdxlistCacheResize(struct cdiPioIdxlistCache *cache, size_t sizeEntries)
{
size_t cacheSize = cache ? cache->size : 0;
if (sizeEntries > MAX_CACHE_SIZE)
......@@ -102,7 +102,7 @@ cdiPioDstIdxlistCacheResize(struct cdiPioIdxlistCache *cache, size_t sizeEntries
newCache->size = sizeEntries;
struct idxlistDesc *restrict entries = newCache->entries;
for (size_t i = cacheSize; i < sizeEntries; ++i)
entries[i].type = CDIPIO_DSTIDXLISTTYPE_EMPTY;
entries[i].type = CDIPIO_IDXLISTTYPE_EMPTY;
}
else
newCache = cache;
......@@ -110,7 +110,7 @@ cdiPioDstIdxlistCacheResize(struct cdiPioIdxlistCache *cache, size_t sizeEntries
}
void
cdiPioDstIdxlistCacheDelete(struct cdiPioIdxlistCache *cache)
cdiPioIdxlistCacheDelete(struct cdiPioIdxlistCache *cache)
{
if (cache)
{
......@@ -123,8 +123,8 @@ cdiPioDstIdxlistCacheDelete(struct cdiPioIdxlistCache *cache)
}
static Xt_idxlist
cdiPioDstIdxlistCacheAddSectionND(struct cdiPioIdxlistCache *cache,
enum cdiPioDstIdxlistType type,
cdiPioIdxlistCacheAddSectionND(struct cdiPioIdxlistCache *cache,
enum cdiPioIdxlistType type,
size_t ndims,
const Xt_int wholeShape[],
const Xt_int sliceOrigin[],
......@@ -176,37 +176,37 @@ cdiPioDstIdxlistCacheAddSectionND(struct cdiPioIdxlistCache *cache,
}
Xt_idxlist
cdiPioDstIdxlistCacheAddSection2D(struct cdiPioIdxlistCache *cache,
const Xt_int wholeShape[2],
const Xt_int sliceOrigin[2],
const int sliceShape[2])
cdiPioIdxlistCacheAddSection2D(struct cdiPioIdxlistCache *cache,
const Xt_int wholeShape[2],
const Xt_int sliceOrigin[2],
const int sliceShape[2])
{
return cdiPioDstIdxlistCacheAddSectionND(cache,
CDIPIO_DSTIDXLISTTYPE_SECTION2D, 2,
wholeShape, sliceOrigin, sliceShape);
return cdiPioIdxlistCacheAddSectionND(cache,
CDIPIO_IDXLISTTYPE_SECTION2D, 2,
wholeShape, sliceOrigin, sliceShape);
}
Xt_idxlist
cdiPioDstIdxlistCacheAddSection3D(struct cdiPioIdxlistCache *cache,
const Xt_int wholeShape[3],
const Xt_int sliceOrigin[3],
const int sliceShape[3])
cdiPioIdxlistCacheAddSection3D(struct cdiPioIdxlistCache *cache,
const Xt_int wholeShape[3],
const Xt_int sliceOrigin[3],
const int sliceShape[3])
{
return cdiPioDstIdxlistCacheAddSectionND(cache,
CDIPIO_DSTIDXLISTTYPE_SECTION3D, 3,
wholeShape, sliceOrigin, sliceShape);
return cdiPioIdxlistCacheAddSectionND(cache,
CDIPIO_IDXLISTTYPE_SECTION3D, 3,
wholeShape, sliceOrigin, sliceShape);
}
Xt_idxlist
cdiPioDstIdxlistCacheAddStripes1(struct cdiPioIdxlistCache *cache,
cdiPioIdxlistCacheAddStripes1(struct cdiPioIdxlistCache *cache,
Xt_int start, int nstrides)
{
size_t cacheSize=cache->size, cacheFill = cache->numEntries,
cacheInsertPos;
struct idxlistDesc *restrict entries = cache->entries;
for (size_t i = 0; i < cacheFill; ++i)
if (entries[i].type == CDIPIO_DSTIDXLISTTYPE_STRIPES1
if (entries[i].type == CDIPIO_IDXLISTTYPE_STRIPES1
&& entries[i].desc.stripes1.start == start
&& entries[i].desc.stripes1.nstrides == nstrides)
return entries[i].idxlist;
......@@ -225,7 +225,7 @@ cdiPioDstIdxlistCacheAddStripes1(struct cdiPioIdxlistCache *cache,
cacheInsertPos %= cacheSize;
xt_idxlist_delete(entries[cacheInsertPos].idxlist);
}
entries[cacheInsertPos].type = CDIPIO_DSTIDXLISTTYPE_STRIPES1;
entries[cacheInsertPos].type = CDIPIO_IDXLISTTYPE_STRIPES1;
entries[cacheInsertPos].desc.stripes1.start = start;
entries[cacheInsertPos].desc.stripes1.nstrides = nstrides;
struct Xt_stripe stripe = { .start = start, .stride = 1,
......
......@@ -8,32 +8,32 @@
#include <stdlib.h>
struct cdiPioIdxlistCache *
cdiPioDstIdxlistCacheNew(size_t sizeEntries);
cdiPioIdxlistCacheNew(size_t sizeEntries);
size_t
cdiPioDstIdxlistCacheGetSize(struct cdiPioIdxlistCache *cache);
cdiPioIdxlistCacheGetSize(struct cdiPioIdxlistCache *cache);
struct cdiPioIdxlistCache *
cdiPioDstIdxlistCacheResize(struct cdiPioIdxlistCache *cache, size_t sizeEntries);
cdiPioIdxlistCacheResize(struct cdiPioIdxlistCache *cache, size_t sizeEntries);
void
cdiPioDstIdxlistCacheDelete(struct cdiPioIdxlistCache *cache);
cdiPioIdxlistCacheDelete(struct cdiPioIdxlistCache *cache);
Xt_idxlist
cdiPioDstIdxlistCacheAddSection2D(struct cdiPioIdxlistCache *cache,
const Xt_int wholeShape[2],
const Xt_int sliceOrigin[2],
const int sliceShape[2]);
cdiPioIdxlistCacheAddSection2D(struct cdiPioIdxlistCache *cache,
const Xt_int wholeShape[2],
const Xt_int sliceOrigin[2],
const int sliceShape[2]);
Xt_idxlist
cdiPioDstIdxlistCacheAddSection3D(struct cdiPioIdxlistCache *cache,
const Xt_int wholeShape[3],
const Xt_int sliceOrigin[3],
const int sliceShape[3]);
cdiPioIdxlistCacheAddSection3D(struct cdiPioIdxlistCache *cache,
const Xt_int wholeShape[3],
const Xt_int sliceOrigin[3],
const int sliceShape[3]);
Xt_idxlist
cdiPioDstIdxlistCacheAddStripes1(struct cdiPioIdxlistCache *cache,
Xt_int start, int nstrides);
cdiPioIdxlistCacheAddStripes1(struct cdiPioIdxlistCache *cache,
Xt_int start, int nstrides);
#endif
......
......@@ -452,11 +452,11 @@ buildVarSlicesIdxList(int vlistID, int varID, int startLvl, int numLvl,
Xt_int start = sliceSize * origin[0];
int nstrides = sliceSize * sliceShape[0];
idxlist
= cdiPioDstIdxlistCacheAddStripes1(DstIdxlistCache, start, nstrides);
= cdiPioIdxlistCacheAddStripes1(DstIdxlistCache, start, nstrides);
}
else
idxlist = cdiPioDstIdxlistCacheAddSection3D(DstIdxlistCache,
varShapeXt, origin, sliceShape);
idxlist = cdiPioIdxlistCacheAddSection3D(DstIdxlistCache,
varShapeXt, origin, sliceShape);
return idxlist;
}
......@@ -759,9 +759,9 @@ writeNetCDFStreamParallel(size_t streamIdx,
preWriteChunkSize[2 - i] = (int)varChunk[i].size;
}
preWriteChunk
= cdiPioDstIdxlistCacheAddSection3D(DstIdxlistCache,
varDims, preWriteChunkStart,
preWriteChunkSize);
= cdiPioIdxlistCacheAddSection3D(DstIdxlistCache,
varDims, preWriteChunkStart,
preWriteChunkSize);
}
xdebug("Writing chunk { { %d, %d }, { %d, %d },"
" { %d, %d } }", myChunk[0][0], myChunk[0][1],
......@@ -1884,10 +1884,10 @@ cdiPioRecvStreamDefVlist(void *buffer, int size, int *pos,
xmpi(MPI_Info_free(&no_locks_info));
size_t maxNumStreamWrites = (size_t)getMaxNumStreamWrites(streamptr),
currentDstIdxlistCacheSize = cdiPioDstIdxlistCacheGetSize(DstIdxlistCache);
currentDstIdxlistCacheSize = cdiPioIdxlistCacheGetSize(DstIdxlistCache);
if ((neededDstIdxlistCacheSize += maxNumStreamWrites) > currentDstIdxlistCacheSize)
DstIdxlistCache = cdiPioDstIdxlistCacheResize(DstIdxlistCache,
neededDstIdxlistCacheSize);
DstIdxlistCache = cdiPioIdxlistCacheResize(DstIdxlistCache,
neededDstIdxlistCacheSize);
if (conf->cacheXmaps)
{
size_t currentXmapCacheSize = cdiPioXmapCacheGetSize(XmapCache);
......@@ -1964,7 +1964,7 @@ void cdiPioCollectorMessageLoop()
#endif
if (conf->cacheXmaps)
cdiPioXmapCacheDelete(XmapCache);
cdiPioDstIdxlistCacheDelete(DstIdxlistCache);
cdiPioIdxlistCacheDelete(DstIdxlistCache);
xdebug("%s", "RETURN");
return;
case RESOURCES:
......
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