Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
libcdi
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
mpim-sw
libcdi
Commits
69434573
Commit
69434573
authored
7 years ago
by
Thomas Jahns
Browse files
Options
Downloads
Patches
Plain Diff
Also rename index list cache interface functions.
parent
0dbaa3b1
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
src/pio_idxlist_cache.c
+31
-31
31 additions, 31 deletions
src/pio_idxlist_cache.c
src/pio_idxlist_cache.h
+14
-14
14 additions, 14 deletions
src/pio_idxlist_cache.h
src/pio_server.c
+10
-10
10 additions, 10 deletions
src/pio_server.c
with
55 additions
and
55 deletions
src/pio_idxlist_cache.c
+
31
−
31
View file @
69434573
...
...
@@ -16,12 +16,12 @@ enum {
};
#define MAX_CACHE_SIZE ((((size_t)1) << LRAND48_BITS) - 1)
enum
cdiPio
Dst
IdxlistType
enum
cdiPioIdxlistType
{
CDIPIO_
DST
IDXLISTTYPE_EMPTY
,
CDIPIO_
DST
IDXLISTTYPE_SECTION2D
,
CDIPIO_
DST
IDXLISTTYPE_SECTION3D
,
CDIPIO_
DST
IDXLISTTYPE_STRIPES1
,
CDIPIO_IDXLISTTYPE_EMPTY
,
CDIPIO_IDXLISTTYPE_SECTION2D
,
CDIPIO_IDXLISTTYPE_SECTION3D
,
CDIPIO_IDXLISTTYPE_STRIPES1
,
};
struct
sectionNDDesc
...
...
@@ -38,7 +38,7 @@ struct stripes1Desc
struct
idxlistDesc
{
enum
cdiPio
Dst
IdxlistType
type
;
enum
cdiPioIdxlistType
type
;
union
{
struct
sectionNDDesc
sectionND
;
...
...
@@ -53,7 +53,7 @@ struct cdiPioIdxlistCache {
};
struct
cdiPioIdxlistCache
*
cdiPio
Dst
IdxlistCacheNew
(
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_
DST
IDXLISTTYPE_EMPTY
;
entries
[
i
].
type
=
CDIPIO_IDXLISTTYPE_EMPTY
;
return
cache
;
}
size_t
cdiPio
Dst
IdxlistCacheGetSize
(
struct
cdiPioIdxlistCache
*
cache
)
cdiPioIdxlistCacheGetSize
(
struct
cdiPioIdxlistCache
*
cache
)
{
return
cache
?
cache
->
size
:
0
;
}
struct
cdiPioIdxlistCache
*
cdiPio
Dst
IdxlistCacheResize
(
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_
DST
IDXLISTTYPE_EMPTY
;
entries
[
i
].
type
=
CDIPIO_IDXLISTTYPE_EMPTY
;
}
else
newCache
=
cache
;
...
...
@@ -110,7 +110,7 @@ cdiPioDstIdxlistCacheResize(struct cdiPioIdxlistCache *cache, size_t sizeEntries
}
void
cdiPio
Dst
IdxlistCacheDelete
(
struct
cdiPioIdxlistCache
*
cache
)
cdiPioIdxlistCacheDelete
(
struct
cdiPioIdxlistCache
*
cache
)
{
if
(
cache
)
{
...
...
@@ -123,8 +123,8 @@ cdiPioDstIdxlistCacheDelete(struct cdiPioIdxlistCache *cache)
}
static
Xt_idxlist
cdiPio
Dst
IdxlistCacheAddSectionND
(
struct
cdiPioIdxlistCache
*
cache
,
enum
cdiPio
Dst
IdxlistType
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
cdiPio
Dst
IdxlistCacheAddSection2D
(
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
cdiPio
Dst
IdxlistCacheAddSectionND
(
cache
,
CDIPIO_
DST
IDXLISTTYPE_SECTION2D
,
2
,
wholeShape
,
sliceOrigin
,
sliceShape
);
return
cdiPioIdxlistCacheAddSectionND
(
cache
,
CDIPIO_IDXLISTTYPE_SECTION2D
,
2
,
wholeShape
,
sliceOrigin
,
sliceShape
);
}
Xt_idxlist
cdiPio
Dst
IdxlistCacheAddSection3D
(
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
cdiPio
Dst
IdxlistCacheAddSectionND
(
cache
,
CDIPIO_
DST
IDXLISTTYPE_SECTION3D
,
3
,
wholeShape
,
sliceOrigin
,
sliceShape
);
return
cdiPioIdxlistCacheAddSectionND
(
cache
,
CDIPIO_IDXLISTTYPE_SECTION3D
,
3
,
wholeShape
,
sliceOrigin
,
sliceShape
);
}
Xt_idxlist
cdiPio
Dst
IdxlistCacheAddStripes1
(
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_
DST
IDXLISTTYPE_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_
DST
IDXLISTTYPE_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
,
...
...
This diff is collapsed.
Click to expand it.
src/pio_idxlist_cache.h
+
14
−
14
View file @
69434573
...
...
@@ -8,32 +8,32 @@
#include
<stdlib.h>
struct
cdiPioIdxlistCache
*
cdiPio
Dst
IdxlistCacheNew
(
size_t
sizeEntries
);
cdiPioIdxlistCacheNew
(
size_t
sizeEntries
);
size_t
cdiPio
Dst
IdxlistCacheGetSize
(
struct
cdiPioIdxlistCache
*
cache
);
cdiPioIdxlistCacheGetSize
(
struct
cdiPioIdxlistCache
*
cache
);
struct
cdiPioIdxlistCache
*
cdiPio
Dst
IdxlistCacheResize
(
struct
cdiPioIdxlistCache
*
cache
,
size_t
sizeEntries
);
cdiPioIdxlistCacheResize
(
struct
cdiPioIdxlistCache
*
cache
,
size_t
sizeEntries
);
void
cdiPio
Dst
IdxlistCacheDelete
(
struct
cdiPioIdxlistCache
*
cache
);
cdiPioIdxlistCacheDelete
(
struct
cdiPioIdxlistCache
*
cache
);
Xt_idxlist
cdiPio
Dst
IdxlistCacheAddSection2D
(
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
cdiPio
Dst
IdxlistCacheAddSection3D
(
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
cdiPio
Dst
IdxlistCacheAddStripes1
(
struct
cdiPioIdxlistCache
*
cache
,
Xt_int
start
,
int
nstrides
);
cdiPioIdxlistCacheAddStripes1
(
struct
cdiPioIdxlistCache
*
cache
,
Xt_int
start
,
int
nstrides
);
#endif
...
...
This diff is collapsed.
Click to expand it.
src/pio_server.c
+
10
−
10
View file @
69434573
...
...
@@ -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
=
cdiPio
Dst
IdxlistCacheAddStripes1
(
DstIdxlistCache
,
start
,
nstrides
);
=
cdiPioIdxlistCacheAddStripes1
(
DstIdxlistCache
,
start
,
nstrides
);
}
else
idxlist
=
cdiPio
Dst
IdxlistCacheAddSection3D
(
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
=
cdiPio
Dst
IdxlistCacheAddSection3D
(
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
=
cdiPio
Dst
IdxlistCacheGetSize
(
DstIdxlistCache
);
currentDstIdxlistCacheSize
=
cdiPioIdxlistCacheGetSize
(
DstIdxlistCache
);
if
((
neededDstIdxlistCacheSize
+=
maxNumStreamWrites
)
>
currentDstIdxlistCacheSize
)
DstIdxlistCache
=
cdiPio
Dst
IdxlistCacheResize
(
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
);
cdiPio
Dst
IdxlistCacheDelete
(
DstIdxlistCache
);
cdiPioIdxlistCacheDelete
(
DstIdxlistCache
);
xdebug
(
"%s"
,
"RETURN"
);
return
;
case
RESOURCES
:
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment