From d67de664532bfb6485f5864f1fd27f7c5e253054 Mon Sep 17 00:00:00 2001 From: Jens Steube Date: Sat, 27 Apr 2019 16:00:29 +0200 Subject: [PATCH 1/2] Disable kernel cache on -m 3200 --- src/modules/module_03200.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/modules/module_03200.c b/src/modules/module_03200.c index 89a563a0a..b07af2bc9 100644 --- a/src/modules/module_03200.c +++ b/src/modules/module_03200.c @@ -72,6 +72,11 @@ u64 module_tmp_size (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED c return tmp_size; } +bool module_jit_cache_disable (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) +{ + return true; +} + char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra, MAYBE_UNUSED const hashes_t *hashes, MAYBE_UNUSED const hc_device_param_t *device_param) { char *jit_build_options = NULL; @@ -269,7 +274,7 @@ void module_init (module_ctx_t *module_ctx) module_ctx->module_hook_salt_size = MODULE_DEFAULT; module_ctx->module_hook_size = MODULE_DEFAULT; module_ctx->module_jit_build_options = module_jit_build_options; - module_ctx->module_jit_cache_disable = MODULE_DEFAULT; + module_ctx->module_jit_cache_disable = module_jit_cache_disable; module_ctx->module_kernel_accel_max = MODULE_DEFAULT; module_ctx->module_kernel_accel_min = MODULE_DEFAULT; module_ctx->module_kernel_loops_max = MODULE_DEFAULT; From 200e72dba3d7caf94384194411f110b91d4a798c Mon Sep 17 00:00:00 2001 From: Jens Steube Date: Sat, 27 Apr 2019 16:15:18 +0200 Subject: [PATCH 2/2] Limit -T maximum on -m 3200 to what's possible based on device specific shared memory available --- src/modules/module_03200.c | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/modules/module_03200.c b/src/modules/module_03200.c index b07af2bc9..73a8d3a76 100644 --- a/src/modules/module_03200.c +++ b/src/modules/module_03200.c @@ -94,25 +94,32 @@ char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAY } else { + u32 overhead = 0; + + if (device_param->device_vendor_id == VENDOR_ID_NV) + { + // note we need to use device_param->device_local_mem_size - 4 because opencl jit returns with: + // Entry function '...' uses too much shared data (0xc004 bytes, 0xc000 max) + // on my development system. no clue where the 4 bytes are spent. + // I did some research on this and it seems to be related with the datatype. + // For example, if i used u8 instead, there's only 1 byte wasted. + + overhead = 4; + } + if (user_options->kernel_threads_chgd == true) { fixed_local_size = user_options->kernel_threads; + + // otherwise out-of-bound reads + + if ((fixed_local_size * 4096) > (device_param->device_local_mem_size - overhead)) + { + fixed_local_size = (device_param->device_local_mem_size - overhead) / 4096; + } } else { - u32 overhead = 0; - - if (device_param->device_vendor_id == VENDOR_ID_NV) - { - // note we need to use device_param->device_local_mem_size - 4 because opencl jit returns with: - // Entry function '...' uses too much shared data (0xc004 bytes, 0xc000 max) - // on my development system. no clue where the 4 bytes are spent. - // I did some research on this and it seems to be related with the datatype. - // For example, if i used u8 instead, there's only 1 byte wasted. - - overhead = 4; - } - fixed_local_size = (device_param->device_local_mem_size - overhead) / 4096; } }