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
8542201a
Commit
8542201a
authored
Jul 01, 2022
by
iker_martin
Browse files
Finalizada implementacion de regresion lineal con todas las colectivas
parent
dae36bb8
Changes
4
Show whitespace changes
Inline
Side-by-side
Codes/Main/Main.c
View file @
8542201a
...
...
@@ -145,7 +145,7 @@ int main(int argc, char *argv[]) {
if
(
res
==
1
)
{
// Se ha llegado al final de la aplicacion
MPI_Barrier
(
comm
);
// TODO Posible error al utilizar SHRINK
results
->
exec_time
=
MPI_Wtime
()
-
results
->
exec_start
-
result
->
wasted_time
;
results
->
exec_time
=
MPI_Wtime
()
-
results
->
exec_start
-
result
s
->
wasted_time
;
}
print_final_results
();
// Pasado este punto ya no pueden escribir los procesos
...
...
Codes/Main/linear_reg.c
View file @
8542201a
...
...
@@ -3,6 +3,7 @@
#include <math.h>
#include <mpi.h>
#include "Main_datatypes.h"
#include "../malleability/distribution_methods/block_distribution.h"
#include "linear_reg.h"
...
...
@@ -113,35 +114,91 @@ void lr_times_bcast(int myId, int numP, int root, MPI_Comm comm, int loop_iters,
* Obtains an array of times to perform an "Allgatherv"
* operation depending on a predifined set of number of bytes.
*/
/*
void
lr_times_allgatherv
(
int
myId
,
int
numP
,
int
root
,
MPI_Comm
comm
,
int
loop_iters
,
double
*
times
)
{
int
i
,
j
,
n
;
int *counts, *displs;
double
start_time
;
char *aux = NULL;
char
*
aux
=
NULL
,
*
aux_full
=
NULL
;
struct
Dist_data
dist_data
;
struct
Counts
counts
;
for
(
i
=
0
;
i
<
LR_ARRAY_TAM
;
i
++
)
{
n
=
LR_bytes_array
[
i
];
prepare_comm_allgatherv
(
numP
,
n
,
&
counts
);
get_block_dist
(
n
,
myId
,
numP
,
&
dist_data
);
aux
=
malloc
(
dist_data
.
tamBl
*
sizeof
(
char
));
aux_full
=
malloc
(
n
*
sizeof
(
char
));
for
(
j
=
0
;
j
<
loop_iters
;
j
++
)
{
MPI_Barrier
(
comm
);
start_time
=
MPI_Wtime
();
MPI_Allgatherv
(
aux
,
dist_data
.
tamBl
,
MPI_CHAR
,
aux_full
,
counts
.
counts
,
counts
.
displs
,
MPI_CHAR
,
comm
);
times
[
i
*
loop_iters
+
j
]
=
MPI_Wtime
()
-
start_time
;
}
counts = calloc(numP,sizeof(int));
displs = calloc(numP,sizeof(int));
freeCounts
(
&
counts
);
free
(
aux
);
free
(
aux_full
);
aux_full
=
NULL
;
aux
=
NULL
;
}
}
/*
* Obtains an array of times to perform an "Reduce"
* operation depending on a predifined set of number of bytes.
*/
void
lr_times_reduce
(
int
myId
,
int
numP
,
int
root
,
MPI_Comm
comm
,
int
loop_iters
,
double
*
times
)
{
int
i
,
j
,
n
;
double
start_time
;
char
*
aux
=
NULL
,
*
aux_full
=
NULL
;
for
(
i
=
0
;
i
<
LR_ARRAY_TAM
;
i
++
)
{
n
=
LR_bytes_array
[
i
];
aux = malloc( * sizeof(char));
aux
=
malloc
(
n
*
sizeof
(
char
));
aux_full
=
malloc
(
n
*
sizeof
(
char
));
for
(
j
=
0
;
j
<
loop_iters
;
j
++
)
{
MPI_Barrier
(
comm
);
start_time
=
MPI_Wtime
();
MPI_
Allgatherv(aux, stage_data.my_bytes, MPI_CHAR, aux_full, counts, displs, MPI_CHAR
, comm);
MPI_
Reduce
(
aux
,
aux_full
,
n
,
MPI_CHAR
,
MPI_MAX
,
root
,
comm
);
times
[
i
*
loop_iters
+
j
]
=
MPI_Wtime
()
-
start_time
;
}
free
(
aux
);
free
(
aux_full
);
aux_full
=
NULL
;
aux
=
NULL
;
}
}
/*
* Obtains an array of times to perform an "Allreduce"
* operation depending on a predifined set of number of bytes.
*/
void
lr_times_allreduce
(
int
myId
,
int
numP
,
int
root
,
MPI_Comm
comm
,
int
loop_iters
,
double
*
times
)
{
int
i
,
j
,
n
;
double
start_time
;
char
*
aux
=
NULL
,
*
aux_full
=
NULL
;
for
(
i
=
0
;
i
<
LR_ARRAY_TAM
;
i
++
)
{
n
=
LR_bytes_array
[
i
];
aux
=
malloc
(
n
*
sizeof
(
char
));
aux_full
=
malloc
(
n
*
sizeof
(
char
));
for
(
j
=
0
;
j
<
loop_iters
;
j
++
)
{
MPI_Barrier
(
comm
);
start_time
=
MPI_Wtime
();
MPI_Allreduce
(
aux
,
aux_full
,
n
,
MPI_CHAR
,
MPI_MAX
,
comm
);
times
[
i
*
loop_iters
+
j
]
=
MPI_Wtime
()
-
start_time
;
}
free
(
aux
);
free
(
aux_full
);
aux_full
=
NULL
;
aux
=
NULL
;
}
free(counts);
free(displs);
}
*/
Codes/Main/linear_reg.h
View file @
8542201a
...
...
@@ -14,5 +14,8 @@ void lr_calc_Y(double slope, double intercept, double x_value, int *y_result);
void
lr_compute
(
int
loop_iters
,
double
*
bytes
,
double
*
times
,
double
*
slope
,
double
*
intercept
);
void
lr_times_bcast
(
int
myId
,
int
numP
,
int
root
,
MPI_Comm
comm
,
int
loop_iters
,
double
*
times
);
void
lr_times_allgatherv
(
int
myId
,
int
numP
,
int
root
,
MPI_Comm
comm
,
int
loop_iters
,
double
*
times
);
void
lr_times_reduce
(
int
myId
,
int
numP
,
int
root
,
MPI_Comm
comm
,
int
loop_iters
,
double
*
times
);
void
lr_times_allreduce
(
int
myId
,
int
numP
,
int
root
,
MPI_Comm
comm
,
int
loop_iters
,
double
*
times
);
#endif
Codes/Main/process_stage.c
View file @
8542201a
...
...
@@ -225,10 +225,13 @@ void linear_regression_stage(iter_stage_t *stage, group_data group, MPI_Comm com
lr_times_bcast
(
group
.
myId
,
group
.
numP
,
ROOT
,
comm
,
loop_iters
,
times
);
break
;
case
COMP_ALLGATHER
:
lr_times_allgatherv
(
group
.
myId
,
group
.
numP
,
ROOT
,
comm
,
loop_iters
,
times
);
break
;
case
COMP_REDUCE
:
lr_times_reduce
(
group
.
myId
,
group
.
numP
,
ROOT
,
comm
,
loop_iters
,
times
);
break
;
case
COMP_ALLREDUCE
:
lr_times_allreduce
(
group
.
myId
,
group
.
numP
,
ROOT
,
comm
,
loop_iters
,
times
);
break
;
default:
return
;
...
...
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