mirror of
https://github.com/hashcat/hashcat.git
synced 2025-08-05 13:25:39 +00:00
Check for allocatable device-memory depending on kernel_accel amplifier before trying to allocate
This commit is contained in:
parent
f190bf11c1
commit
e80541d6dd
@ -13547,6 +13547,8 @@ int main (int argc, char **argv)
|
||||
|
||||
uint device_processor_cores = device_param->device_processor_cores;
|
||||
|
||||
uint kernel_accel = device_param->kernel_accel;
|
||||
|
||||
cl_device_type device_type = device_param->device_type;
|
||||
|
||||
/**
|
||||
@ -13574,6 +13576,7 @@ int main (int argc, char **argv)
|
||||
if (hash_mode == 3200) kernel_threads = 8;
|
||||
if (hash_mode == 9000) kernel_threads = 8;
|
||||
|
||||
// we need to get rid of this
|
||||
if (device_type & CL_DEVICE_TYPE_CPU)
|
||||
{
|
||||
if (benchmark_mode == 0)
|
||||
@ -13592,18 +13595,25 @@ int main (int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
uint kernel_power = device_processors * kernel_threads * device_param->kernel_accel;
|
||||
uint kernel_blocks = kernel_power;
|
||||
|
||||
device_param->kernel_threads = kernel_threads;
|
||||
device_param->kernel_power_user = kernel_power;
|
||||
device_param->kernel_blocks_user = kernel_blocks;
|
||||
|
||||
kernel_blocks_all += kernel_blocks;
|
||||
|
||||
uint size_pws = kernel_power * sizeof (pw_t);
|
||||
uint kernel_power = 1;
|
||||
uint kernel_blocks = 1;
|
||||
|
||||
uint size_pws = 4;
|
||||
uint size_tmps = 4;
|
||||
uint size_hooks = 4;
|
||||
|
||||
// find out if we would request too much memory on memory blocks which are based on kernel_accel
|
||||
|
||||
while (kernel_accel)
|
||||
{
|
||||
kernel_power = device_processors * kernel_threads * kernel_accel;
|
||||
kernel_blocks = kernel_power;
|
||||
|
||||
// size_pws
|
||||
|
||||
size_pws = kernel_blocks * sizeof (pw_t);
|
||||
|
||||
// size_tmps
|
||||
|
||||
switch (hash_mode)
|
||||
{
|
||||
@ -13670,19 +13680,66 @@ int main (int argc, char **argv)
|
||||
case 13000: size_tmps = kernel_blocks * sizeof (pbkdf2_sha256_tmp_t); break;
|
||||
};
|
||||
|
||||
uint size_hooks = 4;
|
||||
// size_hooks
|
||||
|
||||
if ((opts_type & OPTS_TYPE_HOOK12) || (opts_type & OPTS_TYPE_HOOK23))
|
||||
{
|
||||
// insert correct hook size
|
||||
// none yet
|
||||
}
|
||||
|
||||
// we can optimize some stuff here...
|
||||
// now check if all device-memory sizes which depend on the kernel_accel amplifier are within its boundaries
|
||||
// if not, decrease amplifier and try again
|
||||
|
||||
if (size_pws > device_param->device_maxmem_alloc)
|
||||
{
|
||||
kernel_accel--;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (size_tmps > device_param->device_maxmem_alloc)
|
||||
{
|
||||
kernel_accel--;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (size_hooks > device_param->device_maxmem_alloc)
|
||||
{
|
||||
kernel_accel--;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((size_pws + size_tmps + size_hooks) > device_param->device_global_mem)
|
||||
{
|
||||
kernel_accel--;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (kernel_accel == 0)
|
||||
{
|
||||
log_error ("ERROR: Device #%u does not provide enough allocatable device-memory to handle hash-type %u", device_id + 1, data.hash_mode);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
device_param->kernel_threads = kernel_threads;
|
||||
device_param->kernel_power_user = kernel_power;
|
||||
device_param->kernel_blocks_user = kernel_blocks;
|
||||
|
||||
kernel_blocks_all += kernel_blocks;
|
||||
|
||||
device_param->size_pws = size_pws;
|
||||
device_param->size_tmps = size_tmps;
|
||||
device_param->size_hooks = size_hooks;
|
||||
|
||||
// we can optimize some stuff here...
|
||||
|
||||
uint size_root_css = SP_PW_MAX * sizeof (cs_t);
|
||||
uint size_markov_css = SP_PW_MAX * CHARSIZ * sizeof (cs_t);
|
||||
|
||||
@ -13709,6 +13766,8 @@ int main (int argc, char **argv)
|
||||
uint size_bfs = KERNEL_BFS * sizeof (bf_t);
|
||||
uint size_tm = 32 * sizeof (bs_word_t);
|
||||
|
||||
// scrypt stuff
|
||||
|
||||
u64 size_scryptV = 1;
|
||||
|
||||
if ((hash_mode == 8900) || (hash_mode == 9300))
|
||||
|
Loading…
Reference in New Issue
Block a user