diff --git a/Makefile b/Makefile index 14d3e8f..d687e7e 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,7 @@ Q ?= @ #DO NOT EDIT BELOW include $(MAKE_DIR)/config.mk include $(MAKE_DIR)/include_$(TAG).mk +include $(MAKE_DIR)/include_LIKWID.mk INCLUDES += -I./src/includes VPATH = $(SRC_DIR) diff --git a/config.mk b/config.mk index b5c5f15..7cbeca9 100644 --- a/config.mk +++ b/config.mk @@ -1,9 +1,10 @@ # Supported: GCC, CLANG, ICC -TAG ?= GCC +TAG ?= ICC ENABLE_OPENMP ?= false +ENABLE_LIKWID ?= false #Feature options -OPTIONS = -DSIZE=40000000ull +OPTIONS = -DSIZE=100000000ull OPTIONS += -DNTIMES=10 OPTIONS += -DARRAY_ALIGNMENT=64 #OPTIONS += -DVERBOSE_AFFINITY diff --git a/include_ICC.mk b/include_ICC.mk index dd1cb99..5ba42bc 100644 --- a/include_ICC.mk +++ b/include_ICC.mk @@ -5,7 +5,7 @@ ifeq ($(ENABLE_OPENMP),true) OPENMP = -qopenmp endif -CFLAGS = -qopt-report -Ofast -xHost -std=c99 -ffreestanding $(OPENMP) +CFLAGS = -Ofast -xHost -std=c99 -ffreestanding $(OPENMP) LFLAGS = $(OPENMP) DEFINES = -D_GNU_SOURCE INCLUDES = diff --git a/include_LIKWID.mk b/include_LIKWID.mk new file mode 100644 index 0000000..4ca5456 --- /dev/null +++ b/include_LIKWID.mk @@ -0,0 +1,10 @@ +LIKWID_INC ?= -I/usr/local/include +LIKWID_DEFINES ?= -DLIKWID_PERFMON +LIKWID_LIB ?= -L/usr/local/lib + +ifeq ($(strip $(ENABLE_LIKWID)),true) +INCLUDES += ${LIKWID_INC} +DEFINES += ${LIKWID_DEFINES} +LIBS += -llikwid +LFLAGS += ${LIKWID_LIB} +endif diff --git a/src/copy.c b/src/copy.c index 7e31a0c..edf2ecd 100644 --- a/src/copy.c +++ b/src/copy.c @@ -26,6 +26,7 @@ */ #include +#include double copy( double * restrict a, @@ -36,10 +37,15 @@ double copy( double S, E; S = getTimeStamp(); -#pragma omp parallel for +#pragma omp parallel +{ + LIKWID_MARKER_START("COPY"); +#pragma omp for for (int i=0; i +#include double daxpy( double * restrict a, @@ -37,10 +38,15 @@ double daxpy( double S, E; S = getTimeStamp(); -#pragma omp parallel for +#pragma omp parallel +{ + LIKWID_MARKER_START("DAXPY"); +#pragma omp for for (int i=0; i +#else +#define LIKWID_MARKER_INIT +#define LIKWID_MARKER_THREADINIT +#define LIKWID_MARKER_SWITCH +#define LIKWID_MARKER_REGISTER(regionTag) +#define LIKWID_MARKER_START(regionTag) +#define LIKWID_MARKER_STOP(regionTag) +#define LIKWID_MARKER_CLOSE +#define LIKWID_MARKER_GET(regionTag, nevents, events, time, count) +#endif + +#endif /*LIKWID_MARKERS_H*/ diff --git a/src/init.c b/src/init.c index f2164a8..904ce72 100644 --- a/src/init.c +++ b/src/init.c @@ -26,6 +26,7 @@ */ #include +#include double init( double * restrict a, @@ -36,10 +37,15 @@ double init( double S, E; S = getTimeStamp(); -#pragma omp parallel for +#pragma omp parallel +{ + LIKWID_MARKER_START("INIT"); +#pragma omp for for (int i=0; i #include #include +#include #define HLINE "----------------------------------------------------------------------------\n" @@ -105,6 +106,17 @@ int main (int argc, char** argv) {"SDaxpy: ", 4, 2} }; + LIKWID_MARKER_INIT; +#ifdef _OPENMP +#pragma omp parallel +{ +#endif + LIKWID_MARKER_REGISTER("INIT"); + LIKWID_MARKER_REGISTER("COPY"); +#ifdef _OPENMP +} +#endif + a = (double*) allocate( ARRAY_ALIGNMENT, N * bytesPerWord ); b = (double*) allocate( ARRAY_ALIGNMENT, N * bytesPerWord ); c = (double*) allocate( ARRAY_ALIGNMENT, N * bytesPerWord ); @@ -200,6 +212,7 @@ int main (int argc, char** argv) printf(HLINE); check(a, b, c, d, N); + LIKWID_MARKER_CLOSE; return EXIT_SUCCESS; } diff --git a/src/triad.c b/src/triad.c index 04914be..e7336bb 100644 --- a/src/triad.c +++ b/src/triad.c @@ -26,6 +26,7 @@ */ #include +#include double triad( double * restrict a, @@ -38,9 +39,14 @@ double triad( double S, E; S = getTimeStamp(); -#pragma omp parallel for - for (int i=0; i +#include double update( double * restrict a, @@ -36,10 +37,15 @@ double update( double S, E; S = getTimeStamp(); -#pragma omp parallel for +#pragma omp parallel +{ + LIKWID_MARKER_START("UPDATE"); +#pragma omp for for (int i=0; i