Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Iker Martín Álvarez
Proteo
Commits
919758e9
Commit
919758e9
authored
Oct 28, 2024
by
iker_martin
Browse files
Bugfix for overflow when allocating memory.
parent
b39e1324
Changes
1
Show whitespace changes
Inline
Side-by-side
Codes/MaM/distribution_methods/Distributed_CommDist.c
View file @
919758e9
...
...
@@ -76,10 +76,10 @@ void sync_communication(void *send, void **recv, int qty, MPI_Datatype datatype,
prepare_redistribution
(
qty
,
datatype
,
numP
,
numO
,
is_children_group
,
recv
,
&
s_counts
,
&
r_counts
);
/* PERFORM COMMUNICATION */
switch
(
mall_conf
->
red_method
)
{
switch
(
mall_conf
->
red_method
)
{
case
MAM_RED_RMA_LOCKALL
:
case
MAM_RED_RMA_LOCK
:
if
(
is_children_group
)
{
if
(
is_children_group
)
{
dist_data
.
tamBl
=
0
;
}
else
{
get_block_dist
(
qty
,
mall
->
myId
,
numO
,
&
dist_data
);
...
...
@@ -524,12 +524,13 @@ void prepare_redistribution(int qty, MPI_Datatype datatype, int numP, int numO,
int
array_size
=
numO
;
int
offset_ids
=
0
;
int
datasize
;
size_t
total_bytes
;
struct
Dist_data
dist_data
;
if
(
mall_conf
->
spawn_method
==
MAM_SPAWN_BASELINE
)
{
offset_ids
=
MAM_Contains_strat
(
MAM_SPAWN_STRATEGIES
,
MAM_STRAT_SPAWN_INTERCOMM
,
NULL
)
?
0
:
numP
;
}
else
{
}
else
{
// Merge method
array_size
=
numP
>
numO
?
numP
:
numO
;
}
...
...
@@ -543,7 +544,8 @@ void prepare_redistribution(int qty, MPI_Datatype datatype, int numP, int numO,
// Obtener distribución para este hijo
get_block_dist
(
qty
,
mall
->
myId
,
numP
,
&
dist_data
);
*
recv
=
malloc
(
dist_data
.
tamBl
*
datasize
);
total_bytes
=
((
size_t
)
dist_data
.
tamBl
)
*
((
size_t
)
datasize
);
*
recv
=
malloc
(
total_bytes
);
#if MAM_DEBUG >= 4
get_block_dist
(
qty
,
mall
->
myId
,
numP
,
&
dist_data
);
...
...
@@ -559,7 +561,8 @@ void prepare_redistribution(int qty, MPI_Datatype datatype, int numP, int numO,
prepare_comm_alltoall
(
mall
->
myId
,
numO
,
numP
,
qty
,
offset_ids
,
r_counts
);
// Obtener distribución para este hijo y reservar vector de recibo
get_block_dist
(
qty
,
mall
->
myId
,
numO
,
&
dist_data
);
*
recv
=
malloc
(
dist_data
.
tamBl
*
datasize
);
total_bytes
=
((
size_t
)
dist_data
.
tamBl
)
*
((
size_t
)
datasize
);
*
recv
=
malloc
(
total_bytes
);
#if MAM_DEBUG >= 4
print_counts
(
dist_data
,
r_counts
->
counts
,
r_counts
->
displs
,
array_size
,
0
,
"Sources&Targets Recv"
);
#endif
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment