From 72599fd10956179ee36df25d63fda27422cbe112 Mon Sep 17 00:00:00 2001 From: jsteube Date: Thu, 15 Dec 2016 13:19:10 +0100 Subject: [PATCH] Fixed kernel loops in leading to slower performance in --increment mode --- docs/changes.txt | 1 + include/types.h | 2 ++ src/opencl.c | 7 ++++++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index 06ee1d9b9..6b27a03e7 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -13,6 +13,7 @@ - Fixed infinite loop when using --loopback in case all hashes have been cracked - Fixed double fclose() using AMDGPU-Pro on sysfs compatible platform: Leading to segfault +- Fixed kernel loops in leading to slower performance in --increment mode - Removed access to readlink() on FreeBSD: Causes problem building hashcat ## diff --git a/include/types.h b/include/types.h index a4c85ef93..19acd83fe 100644 --- a/include/types.h +++ b/include/types.h @@ -861,6 +861,8 @@ typedef struct hc_device_param u32 kernel_accel; u32 kernel_loops_min; u32 kernel_loops_max; + u32 kernel_loops_min_sav; // the _sav are required because each -i iteration + u32 kernel_loops_max_sav; // needs to recalculate the kernel_loops_min/max based on the current amplifier count u32 kernel_accel_min; u32 kernel_accel_max; u32 kernel_power; diff --git a/src/opencl.c b/src/opencl.c index 9411b36b4..452117d3b 100644 --- a/src/opencl.c +++ b/src/opencl.c @@ -3076,6 +3076,9 @@ void opencl_ctx_devices_kernel_loops (hashcat_ctx_t *hashcat_ctx) if (device_param->skipped == true) continue; + device_param->kernel_loops_min = device_param->kernel_loops_min_sav; + device_param->kernel_loops_max = device_param->kernel_loops_max_sav; + if (device_param->kernel_loops_min < device_param->kernel_loops_max) { u32 innerloop_cnt = 0; @@ -3320,7 +3323,6 @@ int opencl_session_begin (hashcat_ctx_t *hashcat_ctx) device_param->kernel_loops_max = user_options->kernel_loops; } - /** * device properties */ @@ -3526,6 +3528,9 @@ int opencl_session_begin (hashcat_ctx_t *hashcat_ctx) device_param->kernel_loops_max = kernel_loops_fixed; } + device_param->kernel_loops_min_sav = device_param->kernel_loops_min; + device_param->kernel_loops_max_sav = device_param->kernel_loops_max; + u32 kernel_accel_min = device_param->kernel_accel_min; u32 kernel_accel_max = device_param->kernel_accel_max;