Port changes to single file C versions. Formatting.
This commit is contained in:
10
src/main.c
10
src/main.c
@@ -54,11 +54,10 @@
|
|||||||
|
|
||||||
#define LIKWID_PROFILE(tag,call) \
|
#define LIKWID_PROFILE(tag,call) \
|
||||||
_Pragma ("omp parallel") \
|
_Pragma ("omp parallel") \
|
||||||
{LIKWID_MARKER_START(#tag);} \
|
{LIKWID_MARKER_START(#tag);} \
|
||||||
times[tag][k] = call; \
|
times[tag][k] = call; \
|
||||||
_Pragma ("omp parallel") \
|
_Pragma ("omp parallel") \
|
||||||
{LIKWID_MARKER_STOP(#tag);}
|
{LIKWID_MARKER_STOP(#tag);}
|
||||||
|
|
||||||
|
|
||||||
typedef enum benchmark {
|
typedef enum benchmark {
|
||||||
INIT = 0,
|
INIT = 0,
|
||||||
@@ -177,7 +176,6 @@ int main (int argc, char** argv)
|
|||||||
scalar = 3.0;
|
scalar = 3.0;
|
||||||
|
|
||||||
for ( int k=0; k < NTIMES; k++) {
|
for ( int k=0; k < NTIMES; k++) {
|
||||||
|
|
||||||
LIKWID_PROFILE(INIT,init(b, scalar, N));
|
LIKWID_PROFILE(INIT,init(b, scalar, N));
|
||||||
tmp = a[10];
|
tmp = a[10];
|
||||||
LIKWID_PROFILE(SUM,sum(a, N));
|
LIKWID_PROFILE(SUM,sum(a, N));
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* =======================================================================================
|
* =======================================================================================
|
||||||
*
|
*
|
||||||
* Author: Jan Eitzinger (je), jan.eitzinger@fau.de
|
* Author: Jan Eitzinger (je), jan.eitzinger@fau.de
|
||||||
* Copyright (c) 2019 RRZE, University Erlangen-Nuremberg
|
* Copyright (c) 2020 RRZE, University Erlangen-Nuremberg
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -25,6 +25,7 @@
|
|||||||
* =======================================================================================
|
* =======================================================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define _GNU_SOURCE
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@@ -53,6 +54,13 @@
|
|||||||
#define ABS(a) ((a) >= 0 ? (a) : -(a))
|
#define ABS(a) ((a) >= 0 ? (a) : -(a))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define LIKWID_PROFILE(tag,call) \
|
||||||
|
_Pragma ("omp parallel") \
|
||||||
|
{LIKWID_MARKER_START(#tag);} \
|
||||||
|
times[tag][k] = call; \
|
||||||
|
_Pragma ("omp parallel") \
|
||||||
|
{LIKWID_MARKER_STOP(#tag);}
|
||||||
|
|
||||||
typedef enum benchmark {
|
typedef enum benchmark {
|
||||||
INIT = 0,
|
INIT = 0,
|
||||||
COPY,
|
COPY,
|
||||||
@@ -89,8 +97,8 @@ int main (int argc, char** argv)
|
|||||||
double E, S;
|
double E, S;
|
||||||
|
|
||||||
double avgtime[NUMBENCH],
|
double avgtime[NUMBENCH],
|
||||||
maxtime[NUMBENCH],
|
maxtime[NUMBENCH],
|
||||||
mintime[NUMBENCH];
|
mintime[NUMBENCH];
|
||||||
|
|
||||||
double times[NUMBENCH][NTIMES];
|
double times[NUMBENCH][NTIMES];
|
||||||
|
|
||||||
@@ -139,7 +147,7 @@ int main (int argc, char** argv)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for schedule(static)
|
||||||
for (int i=0; i<N; i++) {
|
for (int i=0; i<N; i++) {
|
||||||
a[i] = 2.0;
|
a[i] = 2.0;
|
||||||
b[i] = 2.0;
|
b[i] = 2.0;
|
||||||
@@ -150,13 +158,13 @@ int main (int argc, char** argv)
|
|||||||
scalar = 3.0;
|
scalar = 3.0;
|
||||||
|
|
||||||
for ( int k=0; k < NTIMES; k++) {
|
for ( int k=0; k < NTIMES; k++) {
|
||||||
times[INIT][k] = init(b, scalar, N);
|
LIKWID_PROFILE(INIT,init(b, scalar, N));
|
||||||
times[COPY][k] = copy(c, a, N);
|
LIKWID_PROFILE(COPY,copy(c, a, N));
|
||||||
times[UPDATE][k] = update(a, scalar, N);
|
LIKWID_PROFILE(UPDATE,update(a, scalar, N));
|
||||||
times[TRIAD][k] = triad(a, b, c, scalar, N);
|
LIKWID_PROFILE(TRIAD,triad(a, b, c, scalar, N));
|
||||||
times[DAXPY][k] = daxpy(a, b, scalar, N);
|
LIKWID_PROFILE(DAXPY,daxpy(a, b, scalar, N));
|
||||||
times[STRIAD][k] = striad(a, b, c, d, N);
|
LIKWID_PROFILE(STRIAD,striad(a, b, c, d, N));
|
||||||
times[SDAXPY][k] = sdaxpy(a, b, c, N);
|
LIKWID_PROFILE(SDAXPY,sdaxpy(a, b, c, N));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int j=0; j<NUMBENCH; j++) {
|
for (int j=0; j<NUMBENCH; j++) {
|
||||||
@@ -290,14 +298,9 @@ double init(
|
|||||||
double S, E;
|
double S, E;
|
||||||
|
|
||||||
S = getTimeStamp();
|
S = getTimeStamp();
|
||||||
#pragma omp parallel
|
#pragma omp parallel for schedule(static)
|
||||||
{
|
for (int i=0; i<N; i++) {
|
||||||
LIKWID_MARKER_START("INIT");
|
a[i] = scalar;
|
||||||
#pragma omp for
|
|
||||||
for (int i=0; i<N; i++) {
|
|
||||||
a[i] = scalar;
|
|
||||||
}
|
|
||||||
LIKWID_MARKER_STOP("INIT");
|
|
||||||
}
|
}
|
||||||
E = getTimeStamp();
|
E = getTimeStamp();
|
||||||
|
|
||||||
@@ -313,14 +316,9 @@ double copy(
|
|||||||
double S, E;
|
double S, E;
|
||||||
|
|
||||||
S = getTimeStamp();
|
S = getTimeStamp();
|
||||||
#pragma omp parallel
|
#pragma omp parallel for schedule(static)
|
||||||
{
|
for (int i=0; i<N; i++) {
|
||||||
LIKWID_MARKER_START("COPY");
|
a[i] = b[i];
|
||||||
#pragma omp for
|
|
||||||
for (int i=0; i<N; i++) {
|
|
||||||
a[i] = b[i];
|
|
||||||
}
|
|
||||||
LIKWID_MARKER_STOP("COPY");
|
|
||||||
}
|
}
|
||||||
E = getTimeStamp();
|
E = getTimeStamp();
|
||||||
|
|
||||||
@@ -336,14 +334,9 @@ double update(
|
|||||||
double S, E;
|
double S, E;
|
||||||
|
|
||||||
S = getTimeStamp();
|
S = getTimeStamp();
|
||||||
#pragma omp parallel
|
#pragma omp parallel for schedule(static)
|
||||||
{
|
for (int i=0; i<N; i++) {
|
||||||
LIKWID_MARKER_START("UPDATE");
|
a[i] = a[i] * scalar;
|
||||||
#pragma omp for
|
|
||||||
for (int i=0; i<N; i++) {
|
|
||||||
a[i] = a[i] * scalar;
|
|
||||||
}
|
|
||||||
LIKWID_MARKER_STOP("UPDATE");
|
|
||||||
}
|
}
|
||||||
E = getTimeStamp();
|
E = getTimeStamp();
|
||||||
|
|
||||||
@@ -361,14 +354,9 @@ double triad(
|
|||||||
double S, E;
|
double S, E;
|
||||||
|
|
||||||
S = getTimeStamp();
|
S = getTimeStamp();
|
||||||
#pragma omp parallel
|
#pragma omp parallel for schedule(static)
|
||||||
{
|
for (int i=0; i<N; i++) {
|
||||||
LIKWID_MARKER_START("TRIAD");
|
a[i] = b[i] + scalar * c[i];
|
||||||
#pragma omp for
|
|
||||||
for (int i=0; i<N; i++) {
|
|
||||||
a[i] = b[i] + scalar * c[i];
|
|
||||||
}
|
|
||||||
LIKWID_MARKER_STOP("TRIAD");
|
|
||||||
}
|
}
|
||||||
E = getTimeStamp();
|
E = getTimeStamp();
|
||||||
|
|
||||||
@@ -385,14 +373,9 @@ double daxpy(
|
|||||||
double S, E;
|
double S, E;
|
||||||
|
|
||||||
S = getTimeStamp();
|
S = getTimeStamp();
|
||||||
#pragma omp parallel
|
#pragma omp parallel for schedule(static)
|
||||||
{
|
for (int i=0; i<N; i++) {
|
||||||
LIKWID_MARKER_START("DAXPY");
|
a[i] = a[i] + scalar * b[i];
|
||||||
#pragma omp for
|
|
||||||
for (int i=0; i<N; i++) {
|
|
||||||
a[i] = a[i] + scalar * b[i];
|
|
||||||
}
|
|
||||||
LIKWID_MARKER_STOP("DAXPY");
|
|
||||||
}
|
}
|
||||||
E = getTimeStamp();
|
E = getTimeStamp();
|
||||||
|
|
||||||
@@ -410,14 +393,9 @@ double striad(
|
|||||||
double S, E;
|
double S, E;
|
||||||
|
|
||||||
S = getTimeStamp();
|
S = getTimeStamp();
|
||||||
#pragma omp parallel
|
#pragma omp parallel for schedule(static)
|
||||||
{
|
for (int i=0; i<N; i++) {
|
||||||
LIKWID_MARKER_START("STRIAD");
|
a[i] = b[i] + d[i] * c[i];
|
||||||
#pragma omp for
|
|
||||||
for (int i=0; i<N; i++) {
|
|
||||||
a[i] = b[i] + d[i] * c[i];
|
|
||||||
}
|
|
||||||
LIKWID_MARKER_STOP("STRIAD");
|
|
||||||
}
|
}
|
||||||
E = getTimeStamp();
|
E = getTimeStamp();
|
||||||
|
|
||||||
@@ -434,14 +412,9 @@ double sdaxpy(
|
|||||||
double S, E;
|
double S, E;
|
||||||
|
|
||||||
S = getTimeStamp();
|
S = getTimeStamp();
|
||||||
#pragma omp parallel
|
#pragma omp parallel for schedule(static)
|
||||||
{
|
for (int i=0; i<N; i++) {
|
||||||
LIKWID_MARKER_START("SDAXPY");
|
a[i] = a[i] + b[i] * c[i];
|
||||||
#pragma omp for
|
|
||||||
for (int i=0; i<N; i++) {
|
|
||||||
a[i] = a[i] + b[i] * c[i];
|
|
||||||
}
|
|
||||||
LIKWID_MARKER_STOP("SDAXPY");
|
|
||||||
}
|
}
|
||||||
E = getTimeStamp();
|
E = getTimeStamp();
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* =======================================================================================
|
* =======================================================================================
|
||||||
*
|
*
|
||||||
* Author: Jan Eitzinger (je), jan.eitzinger@fau.de
|
* Author: Jan Eitzinger (je), jan.eitzinger@fau.de
|
||||||
* Copyright (c) 2019 RRZE, University Erlangen-Nuremberg
|
* Copyright (c) 2020 RRZE, University Erlangen-Nuremberg
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -126,7 +126,7 @@ int main (int argc, char** argv)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for schedule(static)
|
||||||
for (int i=0; i<N; i++) {
|
for (int i=0; i<N; i++) {
|
||||||
a[i] = 2.0;
|
a[i] = 2.0;
|
||||||
b[i] = 2.0;
|
b[i] = 2.0;
|
||||||
@@ -276,7 +276,7 @@ double init(
|
|||||||
double S, E;
|
double S, E;
|
||||||
|
|
||||||
S = getTimeStamp();
|
S = getTimeStamp();
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for schedule(static)
|
||||||
for (int i=0; i<N; i++) {
|
for (int i=0; i<N; i++) {
|
||||||
a[i] = scalar;
|
a[i] = scalar;
|
||||||
}
|
}
|
||||||
@@ -294,7 +294,7 @@ double copy(
|
|||||||
double S, E;
|
double S, E;
|
||||||
|
|
||||||
S = getTimeStamp();
|
S = getTimeStamp();
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for schedule(static)
|
||||||
for (int i=0; i<N; i++) {
|
for (int i=0; i<N; i++) {
|
||||||
a[i] = b[i];
|
a[i] = b[i];
|
||||||
}
|
}
|
||||||
@@ -312,7 +312,7 @@ double update(
|
|||||||
double S, E;
|
double S, E;
|
||||||
|
|
||||||
S = getTimeStamp();
|
S = getTimeStamp();
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for schedule(static)
|
||||||
for (int i=0; i<N; i++) {
|
for (int i=0; i<N; i++) {
|
||||||
a[i] = a[i] * scalar;
|
a[i] = a[i] * scalar;
|
||||||
}
|
}
|
||||||
@@ -332,7 +332,7 @@ double triad(
|
|||||||
double S, E;
|
double S, E;
|
||||||
|
|
||||||
S = getTimeStamp();
|
S = getTimeStamp();
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for schedule(static)
|
||||||
for (int i=0; i<N; i++) {
|
for (int i=0; i<N; i++) {
|
||||||
a[i] = b[i] + scalar * c[i];
|
a[i] = b[i] + scalar * c[i];
|
||||||
}
|
}
|
||||||
@@ -351,7 +351,7 @@ double daxpy(
|
|||||||
double S, E;
|
double S, E;
|
||||||
|
|
||||||
S = getTimeStamp();
|
S = getTimeStamp();
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for schedule(static)
|
||||||
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];
|
||||||
}
|
}
|
||||||
@@ -371,7 +371,7 @@ double striad(
|
|||||||
double S, E;
|
double S, E;
|
||||||
|
|
||||||
S = getTimeStamp();
|
S = getTimeStamp();
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for schedule(static)
|
||||||
for (int i=0; i<N; i++) {
|
for (int i=0; i<N; i++) {
|
||||||
a[i] = b[i] + d[i] * c[i];
|
a[i] = b[i] + d[i] * c[i];
|
||||||
}
|
}
|
||||||
@@ -390,7 +390,7 @@ double sdaxpy(
|
|||||||
double S, E;
|
double S, E;
|
||||||
|
|
||||||
S = getTimeStamp();
|
S = getTimeStamp();
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for schedule(static)
|
||||||
for (int i=0; i<N; i++) {
|
for (int i=0; i<N; i++) {
|
||||||
a[i] = a[i] + b[i] * c[i];
|
a[i] = a[i] + b[i] * c[i];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user