Skip to content

Commit 6203ab9

Browse files
author
Alessandro Fanfarillo
committed
Woring version of UDPerformanceVariables
1 parent 2a9540e commit 6203ab9

File tree

3 files changed

+66
-6
lines changed

3 files changed

+66
-6
lines changed

src/mpi/AITuning_OpenCoarrays.cpp

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#include "mpi.h"
2+
#include <string>
3+
#include <iostream>
4+
#include <time.h>
5+
#include "Probes.h"
6+
#include "Variables.h"
7+
#include "Controller.h"
8+
9+
using namespace std;
10+
11+
double start_time, start_get, start_put, start_collective, start_barrier;
12+
static int n_procs, my_id;
13+
14+
static SingleProbe *total_time_p;
15+
16+
int MPI_Init_thread(int *argc, char ***argv, int required, int *provided)
17+
{
18+
int provided_t, err = -1;
19+
bool async_on = false;
20+
21+
AITuning_start("MPICH");
22+
UserDefinedPerformanceVar *total_time_v = new UserDefinedPerformanceVar((char*)"total_time",(char*)"total_time_log.txt");
23+
AITuning_addUserDefinedPerformanceVar(total_time_v);
24+
total_time_p = new SingleProbe((char*)"total_time_probe", total_time_v);
25+
26+
err = PMPI_Init_thread(argc, argv, required, provided);
27+
28+
MPI_Comm_size(MPI_COMM_WORLD, &n_procs);
29+
MPI_Comm_rank(MPI_COMM_WORLD, &my_id);
30+
31+
start_time = MPI_Wtime();
32+
33+
return err;
34+
}
35+
36+
int MPI_Finalize(void){
37+
38+
int err = -1;
39+
double end_time,average,total_time,elapsed_time;
40+
41+
end_time = MPI_Wtime();
42+
43+
elapsed_time = end_time - start_time;
44+
45+
MPI_Reduce(&elapsed_time, &total_time, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
46+
47+
total_time = total_time/n_procs;
48+
49+
printf("Registring value in probe\n");
50+
total_time_p->registerValue(total_time);
51+
52+
err = PMPI_Finalize();
53+
54+
return err;
55+
}

src/mpi/Makefile

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
include ../make.inc
22

33
MPICC ?= mpicc
4+
MPIC++ ?= mpic++
5+
AITUNING_DIR = ./AITuning/lib/libaituning.a
6+
AITUNING_LIB =
47

5-
libcaf_mpi.a: mpi_caf.o ../common/caf_auxiliary.o
6-
ar rcv $@ mpi_caf.o ../common/caf_auxiliary.o
8+
libcaf_mpi.a: mpi_caf.o AITuning_OpenCoarrays.o ../common/caf_auxiliary.o
9+
ar rcv $@ mpi_caf.o AITuning_OpenCoarrays.o ../common/caf_auxiliary.o
710
ranlib $@
811

912
.c.o:
1013
$(MPICC) $(CFLAGS) $(MPI_CFLAGS) -I.. -c $< -o $@
14+
.cpp.o:
15+
$(MPIC++) $(CFLAGS) $(MPI_CFLAGS) -I.. -I./AITuning/include -c $< -o $@
1116

12-
mpi_caf.o: mpi_caf.c ../libcaf.h ../libcaf-gfortran-descriptor.h
17+
mpi_caf.o: mpi_caf.c AITuning_OpenCoarrays.o ../libcaf.h ../libcaf-gfortran-descriptor.h $(AITUNING_DIR) $(AITUNING_LIB)
1318

1419
../common/caf_auxiliary.o:
1520
$(MAKE) -C ../common
1621

1722
clean:
18-
rm -f mpi_caf.o
23+
rm -f *.o
1924

2025
distclean: clean
2126
rm -f libcaf_mpi.a

src/mpi/mpi_caf.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -822,8 +822,8 @@ PREFIX(init) (int *argc, char ***argv)
822822
ierr = MPI_Init_thread(argc, argv, prior_thread_level, &prov_lev);
823823
chk_err(ierr);
824824
caf_owns_mpi = true;
825-
if (caf_this_image == 0 && MPI_THREAD_FUNNELED != prov_lev)
826-
caf_runtime_error("MPI_THREAD_FUNNELED is not supported: %d", prov_lev);
825+
if (caf_this_image == 0 && MPI_THREAD_FUNNELED > prov_lev)
826+
caf_runtime_error("MPI_THREAD_FUNNELED is not supported: %d %d", MPI_THREAD_FUNNELED, prov_lev);
827827
}
828828
#endif
829829
if (unlikely ((ierr != MPI_SUCCESS)))

0 commit comments

Comments
 (0)