New climb

feas part 2 uses euclidean metric
dev
George Lu 2018-07-24 17:55:17 -07:00
parent 13611249a5
commit 5f4502fc07
1 changed files with 22 additions and 9 deletions

View File

@ -1518,6 +1518,7 @@ static int allBench(BMK_result_t* resultPtr,
U64 loopDurationC = 0, loopDurationD = 0; U64 loopDurationC = 0, loopDurationD = 0;
double uncertaintyConstantC, uncertaintyConstantD; double uncertaintyConstantC, uncertaintyConstantD;
double winnerRS; double winnerRS;
int lvlmode = g_lvltarget.cSize != 0;
/* initial benchmarking, gives exact ratio and memory, warms up future runs */ /* initial benchmarking, gives exact ratio and memory, warms up future runs */
benchres = BMK_benchMemInvertible(buf, ctx, 0, &cParams, BMK_both, BMK_iterMode, 1); benchres = BMK_benchMemInvertible(buf, ctx, 0, &cParams, BMK_both, BMK_iterMode, 1);
@ -1548,9 +1549,11 @@ static int allBench(BMK_result_t* resultPtr,
uncertaintyConstantD = 3; uncertaintyConstantD = 3;
} }
if(!lvlmode) {
/* anything with worse ratio in feas is definitely worse, discard */ /* anything with worse ratio in feas is definitely worse, discard */
if(feas && benchres.result.cSize < winnerResult->cSize) { if(feas && benchres.result.cSize < winnerResult->cSize) {
return WORSE_RESULT; return WORSE_RESULT;
}
} }
/* second run, if first run is too short, gives approximate cSpeed + dSpeed */ /* second run, if first run is too short, gives approximate cSpeed + dSpeed */
@ -1578,8 +1581,9 @@ static int allBench(BMK_result_t* resultPtr,
/* disregard infeasible results in feas mode */ /* disregard infeasible results in feas mode */
/* disregard if resultMax < winner in infeas mode */ /* disregard if resultMax < winner in infeas mode */
if((feas && !feasible(resultMax, target)) || if((feas && (!lvlmode && !feasible(resultMax, target))) ||
(!feas && (winnerRS > resultScore(resultMax, buf.srcSize, target)))) { (!feas && ((!lvlmode && winnerRS > resultScore(resultMax, buf.srcSize, target)) ||
(lvlmode && resultDistLvl(*winnerResult, g_lvltarget) > resultDistLvl(resultMax, g_lvltarget))))) {
return WORSE_RESULT; return WORSE_RESULT;
} }
@ -1604,11 +1608,20 @@ static int allBench(BMK_result_t* resultPtr,
/* compare by resultScore when in infeas */ /* compare by resultScore when in infeas */
/* compare by compareResultLT when in feas */ /* compare by compareResultLT when in feas */
if((!feas && (resultScore(benchres.result, buf.srcSize, target) > resultScore(*winnerResult, buf.srcSize, target))) || if(!lvlmode) {
(feas && (compareResultLT(*winnerResult, benchres.result, target, buf.srcSize))) ) { if((!feas && (resultScore(benchres.result, buf.srcSize, target) > resultScore(*winnerResult, buf.srcSize, target))) ||
return BETTER_RESULT; (feas && (compareResultLT(*winnerResult, benchres.result, target, buf.srcSize))) ) {
} else { return BETTER_RESULT;
return WORSE_RESULT; } else {
return WORSE_RESULT;
}
} else {
if((feas && (compareResultLT2(*winnerResult, benchres.result, g_lvltarget, buf.srcSize))) ||
(!feas && (resultScore(benchres.result, buf.srcSize, target) > resultScore(*winnerResult, buf.srcSize, target)))) {
return BETTER_RESULT;
} else {
return WORSE_RESULT;
}
} }
} }