Skip to content

Commit 39fdffa

Browse files
Merge branch 'likwid-regions-autotools' into 'master'
Likwid regions autotools See merge request swift/swiftsim!2254
2 parents 4618478 + 95e34e6 commit 39fdffa

8 files changed

Lines changed: 86 additions & 6 deletions

File tree

configure.ac

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,18 @@ if test "$enable_timers" = "yes"; then
319319
AC_DEFINE([SWIFT_USE_TIMERS],1,[Enable individual timers])
320320
fi
321321

322+
AC_ARG_ENABLE([likwid],
323+
[AS_HELP_STRING([--enable-likwid],
324+
[Enable LIKWID performance monitoring])],
325+
[enable_likwid="$enableval"],
326+
[enable_likwid="no"]
327+
)
328+
329+
if test "$enable_likwid" = "yes"; then
330+
AC_DEFINE([WITH_LIKWID], 1, [Enable LIKWID performance monitoring])
331+
LIBS="$LIBS -llikwid"
332+
fi
333+
322334
# Check if expensive debugging is on.
323335
AC_ARG_ENABLE([debugging-checks],
324336
[AS_HELP_STRING([--enable-debugging-checks],

src/Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,7 @@ nobase_noinst_HEADERS += fvpm_geometry.h fvpm_geometry_struct.h
520520
nobase_noinst_HEADERS += fvpm_geometry/None/fvpm_geometry.h fvpm_geometry/None/fvpm_geometry_struct.h
521521
nobase_noinst_HEADERS += fvpm_geometry/Gizmo/fvpm_geometry.h fvpm_geometry/Gizmo/fvpm_geometry_struct.h
522522
nobase_noinst_HEADERS += fvpm_geometry/Gizmo/MFM/fvpm_geometry.h fvpm_geometry/Gizmo/MFV/fvpm_geometry.h
523+
nobase_noinst_HEADERS += likwid_wrapper.h
523524

524525
# Sources and special flags for the gravity library
525526
libgrav_la_SOURCES = runner_doiact_grav.c

src/likwid_wrapper.h

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#ifndef SWIFT_LIKWID_WRAPPER_H
2+
#define SWIFT_LIKWID_WRAPPER_H
3+
4+
#include "inline.h"
5+
6+
#include <config.h>
7+
8+
#ifdef WITH_LIKWID
9+
#define LIKWID_PERFMON
10+
#include <likwid-marker.h>
11+
#else
12+
#define LIKWID_MARKER_INIT
13+
#define LIKWID_MARKER_REGISTER(regionTag)
14+
#define LIKWID_MARKER_START(regionTag)
15+
#define LIKWID_MARKER_STOP(regionTag)
16+
#define LIKWID_MARKER_CLOSE
17+
#endif
18+
19+
__attribute__((always_inline)) INLINE void swift_likwid_marker_init(void) {
20+
LIKWID_MARKER_INIT;
21+
}
22+
23+
static __attribute__((always_inline)) INLINE void swift_likwid_marker_register(
24+
const char *regionTag) {
25+
LIKWID_MARKER_REGISTER(regionTag);
26+
}
27+
28+
static __attribute__((always_inline)) INLINE void
29+
swift_likwid_marker_start_region(const char *regionTag) {
30+
LIKWID_MARKER_START(regionTag);
31+
}
32+
33+
static __attribute__((always_inline)) INLINE void
34+
swift_likwid_marker_stop_region(const char *regionTag) {
35+
LIKWID_MARKER_STOP(regionTag);
36+
}
37+
38+
static __attribute__((always_inline)) INLINE void swift_likwid_marker_close(
39+
void) {
40+
LIKWID_MARKER_CLOSE;
41+
}
42+
43+
#endif /* SWIFT_LIKWID_WRAPPER_H */

src/power_spectrum.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1287,8 +1287,8 @@ void power_spectrum(const enum power_type type1, const enum power_type type2,
12871287
*
12881288
* @param nr_threads The number of threads used.
12891289
*/
1290-
void power_init(struct power_spectrum_data *p, struct swift_params *params,
1291-
int nr_threads) {
1290+
void power_spectrum_init(struct power_spectrum_data *p,
1291+
struct swift_params *params, int nr_threads) {
12921292

12931293
#ifdef HAVE_FFTW
12941294

src/power_spectrum.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ struct power_spectrum_data {
101101
#endif
102102
};
103103

104-
void power_init(struct power_spectrum_data *p, struct swift_params *params,
105-
int nr_threads);
104+
void power_spectrum_init(struct power_spectrum_data *p,
105+
struct swift_params *params, int nr_threads);
106106
void calc_all_power_spectra(struct power_spectrum_data *pow_data,
107107
const struct space *s, struct threadpool *tp,
108108
const int verbose);

src/runner_main.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,11 @@
136136
#include "runner_doiact_hydro.h"
137137
#include "runner_doiact_undef.h"
138138

139+
/* likwid markers. */
140+
#ifdef WITH_LIKWID
141+
#include "likwid_wrapper.h"
142+
#endif
143+
139144
/**
140145
* @brief The #runner main thread routine.
141146
*
@@ -147,6 +152,9 @@ void *runner_main(void *data) {
147152
struct engine *e = r->e;
148153
struct scheduler *sched = &e->sched;
149154

155+
#ifdef WITH_LIKWID
156+
swift_likwid_marker_start_region("runner_main");
157+
#endif
150158
/* Main loop. */
151159
while (1) {
152160

@@ -591,6 +599,9 @@ void *runner_main(void *data) {
591599

592600
} /* main loop. */
593601
}
602+
#ifdef WITH_LIKWID
603+
swift_likwid_marker_stop_region("runner_main");
604+
#endif
594605

595606
/* Be kind, rewind. */
596607
return NULL;

src/timers.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
enum {
4040
timer_none = 0,
4141
timer_prepare,
42-
timer_init,
42+
timer_init_swift,
4343
timer_init_grav,
4444
timer_drift_part,
4545
timer_drift_gpart,

swift.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@
2525
/* Config parameters. */
2626
#include <config.h>
2727

28+
#ifdef WITH_LIKWID
29+
#include "likwid_wrapper.h"
30+
#endif
31+
2832
/* Some standard headers. */
2933
#include <errno.h>
3034
#include <fenv.h>
@@ -152,6 +156,11 @@ int main(int argc, char *argv[]) {
152156
}
153157
#endif
154158

159+
#ifdef WITH_LIKWID
160+
swift_likwid_marker_init();
161+
swift_likwid_marker_register("runner_main");
162+
#endif
163+
155164
/* Welcome to SWIFT, you made the right choice */
156165
if (myrank == 0) greetings(/*fof=*/0);
157166

@@ -1238,7 +1247,7 @@ int main(int argc, char *argv[]) {
12381247
/* Initialize power spectra calculation */
12391248
if (with_power) {
12401249
#ifdef HAVE_FFTW
1241-
power_init(&pow_data, params, nr_threads);
1250+
power_spectrum_init(&pow_data, params, nr_threads);
12421251
#else
12431252
error("No FFTW library found. Cannot compute power spectra.");
12441253
#endif
@@ -1967,6 +1976,10 @@ int main(int argc, char *argv[]) {
19671976
if (restart) output_options_clean(output_options);
19681977
free(output_options);
19691978

1979+
#ifdef WITH_LIKWID
1980+
swift_likwid_marker_close();
1981+
#endif
1982+
19701983
#ifdef WITH_MPI
19711984
partition_clean(&initial_partition, &reparttype);
19721985
if ((res = MPI_Finalize()) != MPI_SUCCESS)

0 commit comments

Comments
 (0)