From eaf7a7cb2f7bca399504871584f1ed7121cbc612 Mon Sep 17 00:00:00 2001 From: Jens Steube Date: Mon, 15 Feb 2016 14:57:03 +0100 Subject: [PATCH] Final balance meassurements for autotune --- src/oclHashcat.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/oclHashcat.c b/src/oclHashcat.c index 888fc8e26..7ca5e1215 100644 --- a/src/oclHashcat.c +++ b/src/oclHashcat.c @@ -2892,6 +2892,54 @@ static void autotune (hc_device_param_t *device_param) } } + // final balance + + const double exec_ms = try_run (device_param, kernel_accel, kernel_loops, 1); + + e_best = exec_ms; + + u32 kernel_accel_try = kernel_accel; + u32 kernel_loops_try = kernel_loops; + + for (int i = 0; i < 2; i++) + { + kernel_accel_try >>= 1; + kernel_loops_try <<= 1; + + if (kernel_accel_try < kernel_accel_min) break; + if (kernel_loops_try > kernel_loops_max) break; + + const double exec_ms = try_run (device_param, kernel_accel_try, kernel_loops_try, 1); + + if (exec_ms > e_best) break; + + kernel_accel = kernel_accel_try; + kernel_loops = kernel_loops_try; + + e_best = exec_ms; + } + + kernel_accel_try = kernel_accel; + kernel_loops_try = kernel_loops; + + for (int i = 0; i < 2; i++) + { + kernel_accel_try <<= 1; + kernel_loops_try >>= 1; + + if (kernel_accel_try > kernel_accel_max) break; + if (kernel_loops_try < kernel_loops_min) break; + + const double exec_ms = try_run (device_param, kernel_accel_try, kernel_loops_try, 1); + + if (exec_ms > e_best) break; + + kernel_accel = kernel_accel_try; + kernel_loops = kernel_loops_try; + + e_best = exec_ms; + } + // reset timer device_param->exec_pos = 0;