From 8adf2b8cd1dcc0b047d30c16bfedb7eccdc40bd8 Mon Sep 17 00:00:00 2001 From: manumachu Date: Wed, 24 May 2017 12:24:15 +0100 Subject: [PATCH] IEE MOP TC: Adding DGEMM MOP results... --- tests/dgemmmop160GHz.cpp | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/dgemmmop2GHz.cpp | 10 ++++++++++ tests/dgemmparams160GHz.h | 21 +++++++++++++++++++++ tests/dgemmparams2GHz.h | 1 + tests/fftwmop160GHz.cpp | 4 +--- tests/fftwmop2GHz.cpp | 4 +--- 6 files changed, 148 insertions(+), 6 deletions(-) create mode 100644 tests/dgemmmop160GHz.cpp create mode 100644 tests/dgemmparams160GHz.h diff --git a/tests/dgemmmop160GHz.cpp b/tests/dgemmmop160GHz.cpp new file mode 100644 index 0000000..f496c8d --- /dev/null +++ b/tests/dgemmmop160GHz.cpp @@ -0,0 +1,114 @@ + +/*--------------------------------------------------------*/ + +#include +#include +#include + +/*--------------------------------------------------------*/ + +#include +#include + +/*--------------------------------------------------------*/ + +#include "helpers.h" +#include "dgemmparams160GHz.h" + +/*--------------------------------------------------------*/ + +int main(int argc, char** argv) +{ + if (argc != 5) + { + fprintf( + stderr, + "Usage: %s

.\n" + "if p is 0, then 2 to 64 values are evaluated.\n" + "objtype: [0-5]\n" + "0 - ENERGY\n" + "1 - PERFORMANCE\n" + "2 - MOPEP\n" + "3 - EDP\n" + "4 - EDDP\n" + "5 - EDDDP.\n", + argv[0]); + exit(EXIT_FAILURE); + } + + size_t n = strtoul(argv[1], NULL, 10) * deltaX; + size_t p = strtoul(argv[2], NULL, 10); + unsigned int verbosity = strtoul(argv[3], NULL, 10); + HclOptObjective objType = (HclOptObjective)strtoul(argv[4], NULL, 10); + + size_t npoints = sizeof(etimes)/sizeof(size_t); + size_t point, *psizes = (size_t*)malloc(sizeof(size_t)*npoints); + + for (point = 0; point < npoints; point++) + { + psizes[point] = (point + 1) * deltaX; + } + + for (point = 0; point < npoints; point++) + { + energies[point] -= etimes[point] * 100.0; + + if (energies[point] < 0.0) + { + energies[point] = energiesSD[point]; + } + } + + printf( + "MOP for n:%zu, dX:%u, Num points in S:%zu.\n", + n, deltaX, npoints); + + size_t nSolutions, nParetoSolutions; + double* path, *paretoFront; + int rc = hcl_mop( + verbosity, + objType, + n, p, deltaX, + npoints, psizes, etimes, energies, + &nSolutions, &path, + 1, + &nParetoSolutions, &paretoFront); + + if (rc != HCL_SUCCESS) + { + fprintf( + stderr, + "%s\n", + hcl_get_error_message(rc) + ); + exit(EXIT_FAILURE); + } + + free(psizes); + + printf("Objective %s path.\n", hcl_get_objective_type(objType)); + printf("===============================================\n"); + printPESolutions( + nSolutions, path + ); + + printf("Pareto Optimal Front.\n"); + printf("===============================================\n"); + printPESolutions( + nParetoSolutions, paretoFront + ); + + if (nSolutions) + { + free(path); + } + + if (nParetoSolutions) + { + free(paretoFront); + } + + exit(EXIT_SUCCESS); +} + +/*--------------------------------------------------------*/ diff --git a/tests/dgemmmop2GHz.cpp b/tests/dgemmmop2GHz.cpp index 5b57624..17e87cf 100644 --- a/tests/dgemmmop2GHz.cpp +++ b/tests/dgemmmop2GHz.cpp @@ -49,6 +49,16 @@ int main(int argc, char** argv) psizes[point] = (point + 1) * deltaX; } + for (point = 0; point < npoints; point++) + { + energies[point] -= etimes[point] * 100.0; + + if (energies[point] < 0.0) + { + energies[point] = energiesSD[point]; + } + } + printf( "MOP for n:%zu, dX:%u, Num points in S:%zu.\n", n, deltaX, npoints); diff --git a/tests/dgemmparams160GHz.h b/tests/dgemmparams160GHz.h new file mode 100644 index 0000000..6c6c8fd --- /dev/null +++ b/tests/dgemmparams160GHz.h @@ -0,0 +1,21 @@ + +/*--------------------------------------------------------*/ + +#ifndef _DGEMM_PARAMS_HH +#define _DGEMM_PARAMS_HH + +/*--------------------------------------------------------*/ + +#include "dgemmetimes160GHz.h" +#include "dgemmenergies160GHz.h" +#include "dgemmenergies160GHzSD.h" + +/*--------------------------------------------------------*/ + +unsigned int deltaX = 1024 * 1024; + +/*--------------------------------------------------------*/ + +#endif + +/*--------------------------------------------------------*/ diff --git a/tests/dgemmparams2GHz.h b/tests/dgemmparams2GHz.h index ac98da8..4f9e17f 100644 --- a/tests/dgemmparams2GHz.h +++ b/tests/dgemmparams2GHz.h @@ -8,6 +8,7 @@ #include "dgemmetimes2GHz.h" #include "dgemmenergies2GHz.h" +#include "dgemmenergies2GHzSD.h" /*--------------------------------------------------------*/ diff --git a/tests/fftwmop160GHz.cpp b/tests/fftwmop160GHz.cpp index b490049..dda12d4 100644 --- a/tests/fftwmop160GHz.cpp +++ b/tests/fftwmop160GHz.cpp @@ -51,14 +51,12 @@ int main(int argc, char** argv) for (point = 0; point < npoints; point++) { - energies[point] -= etimes[point] * 205.0; + energies[point] -= etimes[point] * 100.0; if (energies[point] < 0.0) { energies[point] = energiesSD[point]; } - - energies[point] *= p; } printf( diff --git a/tests/fftwmop2GHz.cpp b/tests/fftwmop2GHz.cpp index 9997dfd..f269983 100644 --- a/tests/fftwmop2GHz.cpp +++ b/tests/fftwmop2GHz.cpp @@ -51,14 +51,12 @@ int main(int argc, char** argv) for (point = 0; point < npoints; point++) { - energies[point] -= etimes[point] * 205.0; + energies[point] -= etimes[point] * 100.0; if (energies[point] < 0.0) { energies[point] = energiesSD[point]; } - - energies[point] *= p; } printf( -- libgit2 0.22.2