mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-23 13:05:11 +00:00
33 lines
815 B
C
33 lines
815 B
C
|
/* not worth copyrighting */
|
||
|
|
||
|
#include "libbench2/bench.h"
|
||
|
#include <math.h>
|
||
|
|
||
|
double mflops(const bench_problem *p, double t)
|
||
|
{
|
||
|
size_t size = tensor_sz(p->sz);
|
||
|
size_t vsize = tensor_sz(p->vecsz);
|
||
|
|
||
|
if (size <= 1) /* a copy: just return reals copied / time */
|
||
|
switch (p->kind) {
|
||
|
case PROBLEM_COMPLEX:
|
||
|
return (2.0 * size * vsize / (t * 1.0e6));
|
||
|
case PROBLEM_REAL:
|
||
|
case PROBLEM_R2R:
|
||
|
return (1.0 * size * vsize / (t * 1.0e6));
|
||
|
}
|
||
|
|
||
|
switch (p->kind) {
|
||
|
case PROBLEM_COMPLEX:
|
||
|
return (5.0 * size * vsize * log((double)size) /
|
||
|
(log(2.0) * t * 1.0e6));
|
||
|
case PROBLEM_REAL:
|
||
|
case PROBLEM_R2R:
|
||
|
return (2.5 * vsize * size * log((double) size) /
|
||
|
(log(2.0) * t * 1.0e6));
|
||
|
}
|
||
|
BENCH_ASSERT(0 /* can't happen */);
|
||
|
return 0.0;
|
||
|
}
|
||
|
|