Introduce minimal likwid header. Add markers to more benchmarks

This commit is contained in:
Jan Eitzinger
2019-03-15 09:33:48 +01:00
parent e6958c8581
commit 60133e48c1
8 changed files with 30 additions and 33 deletions

View File

@@ -1,5 +1,5 @@
# Supported: GCC, CLANG, ICC # Supported: GCC, CLANG, ICC
TAG ?= GCC TAG ?= ICC
ENABLE_OPENMP ?= false ENABLE_OPENMP ?= false
ENABLE_LIKWID ?= false ENABLE_LIKWID ?= false

View File

@@ -2,10 +2,9 @@ LIKWID_INC ?= -I/usr/local/include
LIKWID_DEFINES ?= -DLIKWID_PERFMON LIKWID_DEFINES ?= -DLIKWID_PERFMON
LIKWID_LIB ?= -L/usr/local/lib LIKWID_LIB ?= -L/usr/local/lib
ifeq ($(strip $(ENABLE_LIKWID)),true) ifeq ($(strip $(ENABLE_LIKWID)),true)
INCLUDES += ${LIKWID_INC} INCLUDES += ${LIKWID_INC}
DEFINES += -DLIKWID ${LIKWID_DEFINES} DEFINES += ${LIKWID_DEFINES}
LIBS += -llikwid LIBS += -llikwid
LFLAGS += ${LIKWID_LIB} LFLAGS += ${LIKWID_LIB}
endif endif

View File

@@ -26,9 +26,7 @@
*/ */
#include <timing.h> #include <timing.h>
#ifdef LIKWID #include <likwid_markers.h>
#include <likwid.h>
#endif
double copy( double copy(
double * restrict a, double * restrict a,
@@ -41,16 +39,12 @@ double copy(
S = getTimeStamp(); S = getTimeStamp();
#pragma omp parallel #pragma omp parallel
{ {
#ifdef LIKWID
LIKWID_MARKER_START("COPY"); LIKWID_MARKER_START("COPY");
#endif
#pragma omp for #pragma omp for
for (int i=0; i<N; i++) { for (int i=0; i<N; i++) {
a[i] = b[i]; a[i] = b[i];
} }
#ifdef LIKWID
LIKWID_MARKER_STOP("COPY"); LIKWID_MARKER_STOP("COPY");
#endif
} }
E = getTimeStamp(); E = getTimeStamp();

View File

@@ -26,6 +26,7 @@
*/ */
#include <timing.h> #include <timing.h>
#include <likwid_markers.h>
double daxpy( double daxpy(
double * restrict a, double * restrict a,
@@ -37,10 +38,15 @@ double daxpy(
double S, E; double S, E;
S = getTimeStamp(); S = getTimeStamp();
#pragma omp parallel for #pragma omp parallel
{
LIKWID_MARKER_START("DAXPY");
#pragma omp for
for (int i=0; i<N; i++) { for (int i=0; i<N; i++) {
a[i] = a[i] + scalar * b[i]; a[i] = a[i] + scalar * b[i];
} }
LIKWID_MARKER_STOP("DAXPY");
}
E = getTimeStamp(); E = getTimeStamp();
return E-S; return E-S;

View File

@@ -26,9 +26,7 @@
*/ */
#include <timing.h> #include <timing.h>
#ifdef LIKWID #include <likwid_markers.h>
#include <likwid.h>
#endif
double init( double init(
double * restrict a, double * restrict a,
@@ -41,17 +39,13 @@ double init(
S = getTimeStamp(); S = getTimeStamp();
#pragma omp parallel #pragma omp parallel
{ {
#ifdef LIKWID
LIKWID_MARKER_START("INIT"); LIKWID_MARKER_START("INIT");
#endif
#pragma omp for #pragma omp for
#pragma vector nontemporal #pragma vector nontemporal
for (int i=0; i<N; i++) { for (int i=0; i<N; i++) {
a[i] = scalar; a[i] = scalar;
} }
#ifdef LIKWID
LIKWID_MARKER_STOP("INIT"); LIKWID_MARKER_STOP("INIT");
#endif
} }
E = getTimeStamp(); E = getTimeStamp();

View File

@@ -38,10 +38,7 @@
#include <timing.h> #include <timing.h>
#include <allocate.h> #include <allocate.h>
#include <affinity.h> #include <affinity.h>
#include <likwid_markers.h>
#ifdef LIKWID
#include <likwid.h>
#endif
#define HLINE "----------------------------------------------------------------------------\n" #define HLINE "----------------------------------------------------------------------------\n"
@@ -109,7 +106,6 @@ int main (int argc, char** argv)
{"SDaxpy: ", 4, 2} {"SDaxpy: ", 4, 2}
}; };
#ifdef LIKWID
LIKWID_MARKER_INIT; LIKWID_MARKER_INIT;
#ifdef _OPENMP #ifdef _OPENMP
#pragma omp parallel #pragma omp parallel
@@ -119,7 +115,6 @@ int main (int argc, char** argv)
LIKWID_MARKER_REGISTER("COPY"); LIKWID_MARKER_REGISTER("COPY");
#ifdef _OPENMP #ifdef _OPENMP
} }
#endif
#endif #endif
a = (double*) allocate( ARRAY_ALIGNMENT, N * bytesPerWord ); a = (double*) allocate( ARRAY_ALIGNMENT, N * bytesPerWord );
@@ -217,10 +212,7 @@ int main (int argc, char** argv)
printf(HLINE); printf(HLINE);
check(a, b, c, d, N); check(a, b, c, d, N);
#ifdef LIKWID
LIKWID_MARKER_CLOSE; LIKWID_MARKER_CLOSE;
#endif
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }

View File

@@ -26,6 +26,7 @@
*/ */
#include <timing.h> #include <timing.h>
#include <likwid_markers.h>
double triad( double triad(
double * restrict a, double * restrict a,
@@ -38,11 +39,16 @@ double triad(
double S, E; double S, E;
S = getTimeStamp(); S = getTimeStamp();
#pragma omp parallel for #pragma omp parallel
for (int i=0; i<N; i++) { {
a[i] = b[i] + scalar * c[i]; LIKWID_MARKER_START("TRIAD");
#pragma omp for
for (int i=0; i<N; i++) {
a[i] = b[i] + scalar * c[i];
}
E = getTimeStamp();
LIKWID_MARKER_STOP("TRIAD");
} }
E = getTimeStamp();
return E-S; return E-S;
} }

View File

@@ -26,6 +26,7 @@
*/ */
#include <timing.h> #include <timing.h>
#include <likwid_markers.h>
double update( double update(
double * restrict a, double * restrict a,
@@ -36,10 +37,15 @@ double update(
double S, E; double S, E;
S = getTimeStamp(); S = getTimeStamp();
#pragma omp parallel for #pragma omp parallel
{
LIKWID_MARKER_START("UPDATE");
#pragma omp for
for (int i=0; i<N; i++) { for (int i=0; i<N; i++) {
a[i] = a[i] * scalar; a[i] = a[i] * scalar;
} }
LIKWID_MARKER_STOP("UPDATE");
}
E = getTimeStamp(); E = getTimeStamp();
return E-S; return E-S;