Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Y
yaxt
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
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
dkrz-sw
yaxt
Commits
6f620f12
Commit
6f620f12
authored
12 years ago
by
Moritz Hanke
Browse files
Options
Downloads
Patches
Plain Diff
renames xlist (xmap) to transfer_pos
parent
3cf7c7e1
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
src/xt_redist_p2p.c
+16
-14
16 additions, 14 deletions
src/xt_redist_p2p.c
src/xt_xmap.c
+2
-2
2 additions, 2 deletions
src/xt_xmap.c
src/xt_xmap.h
+4
-4
4 additions, 4 deletions
src/xt_xmap.h
src/xt_xmap_all2all.c
+40
-40
40 additions, 40 deletions
src/xt_xmap_all2all.c
with
62 additions
and
60 deletions
src/xt_redist_p2p.c
+
16
−
14
View file @
6f620f12
...
...
@@ -46,7 +46,7 @@ struct Xt_redist_p2p {
};
static
MPI_Datatype
generate_block_datatype
(
Xt_idxlist
xlist
,
int
*
block_offsets
,
int
*
block_sizes
,
generate_block_datatype
(
Xt_idxlist
transfer_pos
,
int
*
block_offsets
,
int
*
block_sizes
,
MPI_Datatype
base_datatype
,
MPI_Comm
comm
)
{
MPI_Datatype
type
;
...
...
@@ -56,11 +56,11 @@ generate_block_datatype(Xt_idxlist xlist, int *block_offsets, int *block_sizes,
int
*
bdispl_vec
;
int
*
blen_vec
;
num_indices
=
xt_idxlist_get_num_indices
(
xlist
);
num_indices
=
xt_idxlist_get_num_indices
(
transfer_pos
);
idx_vec
=
xmalloc
(
num_indices
*
sizeof
(
*
idx_vec
));
xt_idxlist_get_indices
(
xlist
,
idx_vec
);
xt_idxlist_get_indices
(
transfer_pos
,
idx_vec
);
assert
(
block_sizes
!=
NULL
);
...
...
@@ -88,7 +88,7 @@ generate_block_datatype(Xt_idxlist xlist, int *block_offsets, int *block_sizes,
}
static
MPI_Datatype
generate_datatype
(
Xt_idxlist
xlist
,
int
*
offsets
,
generate_datatype
(
Xt_idxlist
transfer_pos
,
int
*
offsets
,
MPI_Datatype
base_datatype
,
MPI_Comm
comm
)
{
MPI_Datatype
type
;
...
...
@@ -96,13 +96,13 @@ generate_datatype(Xt_idxlist xlist, int *offsets,
Xt_count
num_indices
;
int
*
displ
;
num_indices
=
xt_idxlist_get_num_indices
(
xlist
);
num_indices
=
xt_idxlist_get_num_indices
(
transfer_pos
);
displ
=
xmalloc
(
num_indices
*
sizeof
(
*
displ
));
assert
(
sizeof
(
Xt_idx
)
==
sizeof
(
int
));
xt_idxlist_get_indices
(
xlist
,
displ
);
xt_idxlist_get_indices
(
transfer_pos
,
displ
);
if
(
offsets
!=
NULL
)
{
Xt_count
i
;
...
...
@@ -137,16 +137,17 @@ generate_msg_infos(int num_msgs, Xt_xmap_iter iter, int *offsets,
do
{
Xt_idxlist
curr_
xlist
;
Xt_idxlist
curr_
transfer_pos
;
curr_
xlist
=
xt_xmap_iterator_get_
xlist
(
iter
);
curr_
transfer_pos
=
xt_xmap_iterator_get_
transfer_pos
(
iter
);
curr_msg
->
datatype
=
generate_datatype
(
curr_xlist
,
offsets
,
base_datatype
,
comm
);
curr_msg
->
datatype
=
generate_datatype
(
curr_transfer_pos
,
offsets
,
base_datatype
,
comm
);
curr_msg
->
rank
=
xt_xmap_iterator_get_rank
(
iter
);
curr_msg
++
;
xt_idxlist_delete
(
curr_
xlist
);
xt_idxlist_delete
(
curr_
transfer_pos
);
}
while
(
xt_xmap_iterator_next
(
iter
));
...
...
@@ -171,16 +172,17 @@ generate_block_msg_infos(int num_msgs, Xt_xmap_iter iter, int *block_offsets, in
do
{
Xt_idxlist
curr_
xlist
;
Xt_idxlist
curr_
transfer_pos
;
curr_
xlist
=
xt_xmap_iterator_get_
xlist
(
iter
);
curr_
transfer_pos
=
xt_xmap_iterator_get_
transfer_pos
(
iter
);
curr_msg
->
datatype
=
generate_block_datatype
(
curr_xlist
,
block_offsets
,
block_sizes
,
base_datatype
,
comm
);
curr_msg
->
datatype
=
generate_block_datatype
(
curr_transfer_pos
,
block_offsets
,
block_sizes
,
base_datatype
,
comm
);
curr_msg
->
rank
=
xt_xmap_iterator_get_rank
(
iter
);
curr_msg
++
;
xt_idxlist_delete
(
curr_
xlist
);
xt_idxlist_delete
(
curr_
transfer_pos
);
}
while
(
xt_xmap_iterator_next
(
iter
));
...
...
This diff is collapsed.
Click to expand it.
src/xt_xmap.c
+
2
−
2
View file @
6f620f12
...
...
@@ -53,9 +53,9 @@ int xt_xmap_iterator_get_rank(Xt_xmap_iter iter) {
return
iter
->
vtable
->
get_rank
(
iter
);
}
Xt_idxlist
xt_xmap_iterator_get_
xlist
(
Xt_xmap_iter
iter
)
{
Xt_idxlist
xt_xmap_iterator_get_
transfer_pos
(
Xt_xmap_iter
iter
)
{
return
iter
->
vtable
->
get_
xlist
(
iter
);
return
iter
->
vtable
->
get_
transfer_pos
(
iter
);
}
void
xt_xmap_iterator_delete
(
Xt_xmap_iter
iter
)
{
...
...
This diff is collapsed.
Click to expand it.
src/xt_xmap.h
+
4
−
4
View file @
6f620f12
...
...
@@ -15,7 +15,7 @@ typedef struct Xt_xmap_iterator *Xt_xmap_iter;
struct
Xt_xmap_iterator_vtable
{
int
(
*
next
)(
Xt_xmap_iter
iter
);
int
(
*
get_rank
)(
Xt_xmap_iter
iter
);
Xt_idxlist
(
*
get_
xlist
)(
Xt_xmap_iter
iter
);
Xt_idxlist
(
*
get_
transfer_pos
)(
Xt_xmap_iter
iter
);
void
(
*
delete
)(
Xt_xmap_iter
iter
);
};
...
...
@@ -137,7 +137,7 @@ int xt_xmap_iterator_get_rank(Xt_xmap_iter iter);
* @param[in] iter exchange map iterator
* @return exchange list of the current item
*/
Xt_idxlist
xt_xmap_iterator_get_
xlist
(
Xt_xmap_iter
iter
);
Xt_idxlist
xt_xmap_iterator_get_
transfer_pos
(
Xt_xmap_iter
iter
);
/**
* destructor for an exchange map iterator
...
...
@@ -154,7 +154,7 @@ void xt_xmap_iterator_delete(Xt_xmap_iter iter);
void
xt_xmap_delete
(
Xt_xmap
xmap
);
/**
* gives a upper limit to the range of positions in the src part of the
xlist
,
* gives a upper limit to the range of positions in the src part of the
transfer_pos
,
*
* @param[in] iter exchange map iterator
* @return exchange list of the current item
...
...
@@ -162,7 +162,7 @@ void xt_xmap_delete(Xt_xmap xmap);
int
xt_xmap_get_max_src_pos
(
Xt_xmap
xmap
);
/**
* gives a upper limit to the range of positions in the dst part of the
xlist
,
* gives a upper limit to the range of positions in the dst part of the
transfer_pos
,
*
* @param[in] iter exchange map iterator
* @return exchange list of the current item
...
...
This diff is collapsed.
Click to expand it.
src/xt_xmap_all2all.c
+
40
−
40
View file @
6f620f12
...
...
@@ -23,17 +23,17 @@ static Xt_xmap_iter xmap_all2all_get_source_iterator(Xt_xmap xmap);
static
void
xmap_all2all_delete
(
Xt_xmap
xmap
);
static
int
xmap_iterator_all2all_next
(
Xt_xmap_iter
iter
);
static
int
xmap_all2all_iterator_get_rank
(
Xt_xmap_iter
iter
);
static
Xt_idxlist
xmap_all2all_iterator_get_
xlist
(
Xt_xmap_iter
iter
);
static
Xt_idxlist
xmap_all2all_iterator_get_
transfer_pos
(
Xt_xmap_iter
iter
);
static
void
xmap_all2all_iterator_delete
(
Xt_xmap_iter
iter
);
static
int
xmap_all2all_get_max_src_pos
(
Xt_xmap
xmap
);
static
int
xmap_all2all_get_max_dst_pos
(
Xt_xmap
xmap
);
static
const
struct
Xt_xmap_iterator_vtable
xmap_iterator_all2all_vtable
=
{
.
next
=
xmap_iterator_all2all_next
,
.
get_rank
=
xmap_all2all_iterator_get_rank
,
.
get_
xlist
=
xmap_all2all_iterator_get_
xlist
,
.
delete
=
xmap_all2all_iterator_delete
};
.
next
=
xmap_iterator_all2all_next
,
.
get_rank
=
xmap_all2all_iterator_get_rank
,
.
get_
transfer_pos
=
xmap_all2all_iterator_get_
transfer_pos
,
.
delete
=
xmap_all2all_iterator_delete
};
struct
Xt_xmap_iterator_all2all
{
...
...
@@ -58,7 +58,7 @@ static const struct Xt_xmap_vtable xmap_all2all_vtable = {
struct
exchange_data
{
// list of relative positions in memory to send or receive
Xt_idxlist
xlist
;
Xt_idxlist
transfer_pos
;
int
rank
;
};
...
...
@@ -71,7 +71,7 @@ struct Xt_xmap_all2all {
// we need the max position in order to enable quick range-checks
// for xmap-users like redist
int
max_src_pos
;
// max possible pos over all src
xlist
s (always >= 0)
int
max_src_pos
;
// max possible pos over all src
transfer_pos
s (always >= 0)
int
max_dst_pos
;
// same for dst
MPI_Comm
comm
;
...
...
@@ -268,11 +268,11 @@ static void exchange_idxlists(Xt_idxlist ** src_intersections,
free
(
displ
);
}
static
void
generate_src_
xlist
(
struct
Xt_xmap_all2all
*
xmap
,
Xt_idxlist
*
intersections
,
int
*
ranks
,
Xt_count
num_intersections
,
Xt_idxlist
mypart_idxlist
)
{
static
void
generate_src_
transfer_pos
(
struct
Xt_xmap_all2all
*
xmap
,
Xt_idxlist
*
intersections
,
int
*
ranks
,
Xt_count
num_intersections
,
Xt_idxlist
mypart_idxlist
)
{
Xt_count
intersection_size
[
num_intersections
];
int
max_intersection_size
=
0
;
...
...
@@ -299,7 +299,7 @@ static void generate_src_xlist(struct Xt_xmap_all2all * xmap,
single_match_only
);
assert
(
retval
!=
1
);
xmap
->
src_msg
[
i
].
xlist
=
xt_idxvec_new
(
intersection_pos
,
intersection_size
[
i
]);
xmap
->
src_msg
[
i
].
transfer_pos
=
xt_idxvec_new
(
intersection_pos
,
intersection_size
[
i
]);
xmap
->
src_msg
[
i
].
rank
=
ranks
[
i
];
}
...
...
@@ -307,11 +307,11 @@ static void generate_src_xlist(struct Xt_xmap_all2all * xmap,
free
(
intersection_idxvec
);
}
static
void
generate_dst_
xlist
(
struct
Xt_xmap_all2all
*
xmap
,
Xt_idxlist
*
intersections
,
int
*
ranks
,
Xt_count
num_intersections
,
Xt_idxlist
mypart_idxlist
)
{
static
void
generate_dst_
transfer_pos
(
struct
Xt_xmap_all2all
*
xmap
,
Xt_idxlist
*
intersections
,
int
*
ranks
,
Xt_count
num_intersections
,
Xt_idxlist
mypart_idxlist
)
{
Xt_count
intersection_size
[
num_intersections
];
int
max_intersection_size
=
0
;
...
...
@@ -338,7 +338,7 @@ static void generate_dst_xlist(struct Xt_xmap_all2all * xmap,
single_match_only
);
assert
(
retval
!=
1
);
xmap
->
dst_msg
[
i
].
xlist
=
xt_idxvec_new
(
intersection_pos
,
intersection_size
[
i
]);
xmap
->
dst_msg
[
i
].
transfer_pos
=
xt_idxvec_new
(
intersection_pos
,
intersection_size
[
i
]);
xmap
->
dst_msg
[
i
].
rank
=
ranks
[
i
];
}
...
...
@@ -346,20 +346,20 @@ static void generate_dst_xlist(struct Xt_xmap_all2all * xmap,
free
(
intersection_idxvec
);
}
static
void
generate_
xlist
(
struct
Xt_xmap_all2all
*
xmap
,
Xt_idxlist
*
src_intersections
,
int
*
src_ranks
,
Xt_count
num_src_intersections
,
Xt_idxlist
*
dst_intersections
,
int
*
dst_ranks
,
Xt_count
num_dst_intersections
,
Xt_idxlist
src_idxlist_local
,
Xt_idxlist
dst_idxlist_local
)
{
generate_src_
xlist
(
xmap
,
src_intersections
,
src_ranks
,
num_src_intersections
,
src_idxlist_local
);
generate_dst_
xlist
(
xmap
,
dst_intersections
,
dst_ranks
,
num_dst_intersections
,
dst_idxlist_local
);
static
void
generate_
transfer_pos
(
struct
Xt_xmap_all2all
*
xmap
,
Xt_idxlist
*
src_intersections
,
int
*
src_ranks
,
Xt_count
num_src_intersections
,
Xt_idxlist
*
dst_intersections
,
int
*
dst_ranks
,
Xt_count
num_dst_intersections
,
Xt_idxlist
src_idxlist_local
,
Xt_idxlist
dst_idxlist_local
)
{
generate_src_
transfer_pos
(
xmap
,
src_intersections
,
src_ranks
,
num_src_intersections
,
src_idxlist_local
);
generate_dst_
transfer_pos
(
xmap
,
dst_intersections
,
dst_ranks
,
num_dst_intersections
,
dst_idxlist_local
);
}
Xt_xmap
xt_xmap_all2all_new
(
Xt_idxlist
src_idxlist
,
Xt_idxlist
dst_idxlist
,
MPI_Comm
comm
)
{
...
...
@@ -382,9 +382,9 @@ Xt_xmap xt_xmap_all2all_new(Xt_idxlist src_idxlist, Xt_idxlist dst_idxlist, MPI_
src_idxlist
,
dst_idxlist
,
xmap
->
comm
);
// generate exchange lists
generate_
xlist
(
xmap
,
src_intersections
,
src_ranks
,
num_src_intersections
,
dst_intersections
,
dst_ranks
,
num_dst_intersections
,
src_idxlist
,
dst_idxlist
);
generate_
transfer_pos
(
xmap
,
src_intersections
,
src_ranks
,
num_src_intersections
,
dst_intersections
,
dst_ranks
,
num_dst_intersections
,
src_idxlist
,
dst_idxlist
);
for
(
Xt_count
i
=
0
;
i
<
num_src_intersections
;
++
i
)
xt_idxlist_delete
(
src_intersections
[
i
]);
...
...
@@ -421,10 +421,10 @@ static void xmap_all2all_delete(Xt_xmap xmap) {
unsigned
i
;
for
(
i
=
0
;
i
<
xmap_all2all
->
ndst
;
++
i
)
xt_idxlist_delete
(
xmap_all2all
->
dst_msg
[
i
].
xlist
);
xt_idxlist_delete
(
xmap_all2all
->
dst_msg
[
i
].
transfer_pos
);
for
(
i
=
0
;
i
<
xmap_all2all
->
nsrc
;
++
i
)
xt_idxlist_delete
(
xmap_all2all
->
src_msg
[
i
].
xlist
);
xt_idxlist_delete
(
xmap_all2all
->
src_msg
[
i
].
transfer_pos
);
free
(
xmap_all2all
->
dst_msg
);
free
(
xmap_all2all
->
src_msg
);
...
...
@@ -499,7 +499,7 @@ static int xmap_all2all_iterator_get_rank(Xt_xmap_iter iter) {
return
iter_all2all
->
msg
->
rank
;
}
static
Xt_idxlist
xmap_all2all_iterator_get_
xlist
(
Xt_xmap_iter
iter
)
{
static
Xt_idxlist
xmap_all2all_iterator_get_
transfer_pos
(
Xt_xmap_iter
iter
)
{
struct
Xt_xmap_iterator_all2all
*
iter_all2all
;
...
...
@@ -507,7 +507,7 @@ static Xt_idxlist xmap_all2all_iterator_get_xlist(Xt_xmap_iter iter) {
assert
(
iter_all2all
!=
NULL
);
return
xt_idxlist_copy
(
iter_all2all
->
msg
->
xlist
);
return
xt_idxlist_copy
(
iter_all2all
->
msg
->
transfer_pos
);
}
static
void
xmap_all2all_iterator_delete
(
Xt_xmap_iter
iter
)
{
...
...
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