Make it a real balancing loop
authorJens Steube <jens.steube@gmail.com>
Wed, 25 May 2016 22:51:11 +0000 (00:51 +0200)
committerJens Steube <jens.steube@gmail.com>
Wed, 25 May 2016 22:51:11 +0000 (00:51 +0200)
src/hashcat.c

index 062a8a8..41c70d0 100644 (file)
@@ -2975,6 +2975,8 @@ static void autotune (hc_device_param_t *device_param)
     exec_ms_pre_final = MIN (exec_ms_pre_final, exec_ms_pre_final_v);
   }
 
+  u32 diff = kernel_loops - kernel_accel;
+
   if ((kernel_loops_min < kernel_loops_max) && (kernel_accel_min < kernel_accel_max))
   {
     for (u32 f = 2; f < 1024; f++)
@@ -2985,6 +2987,10 @@ static void autotune (hc_device_param_t *device_param)
       if (kernel_accel_try > kernel_accel_max) break;
       if (kernel_loops_try < kernel_loops_min) break;
 
+      u32 diff_new = kernel_loops_try - kernel_accel_try;
+
+      if (diff_new > diff) break;
+
       double exec_ms = try_run (device_param, kernel_accel_try, kernel_loops_try);
 
       for (int i = 0; i < VERIFIER_CNT; i++)