mirror of
https://github.com/hashcat/hashcat.git
synced 2025-07-02 04:42:36 +00:00
Only try to allocate memory on a opencl device if it actually has memory
This commit is contained in:
parent
234e6cf49f
commit
b1ca2ca539
@ -48,6 +48,8 @@ void generate_cached_kernel_mp_filename (const u32 opti_type, const u64 opts
|
|||||||
void generate_source_kernel_amp_filename (const u32 attack_kern, char *shared_dir, char *source_file);
|
void generate_source_kernel_amp_filename (const u32 attack_kern, char *shared_dir, char *source_file);
|
||||||
void generate_cached_kernel_amp_filename (const u32 attack_kern, char *cache_dir, const char *device_name_chksum, char *cached_file, bool is_metal);
|
void generate_cached_kernel_amp_filename (const u32 attack_kern, char *cache_dir, const char *device_name_chksum, char *cached_file, bool is_metal);
|
||||||
|
|
||||||
|
bool read_kernel_binary (hashcat_ctx_t *hashcat_ctx, const char *kernel_file, size_t *kernel_lengths, char **kernel_sources);
|
||||||
|
|
||||||
int gidd_to_pw_t (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const u64 gidd, pw_t *pw);
|
int gidd_to_pw_t (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const u64 gidd, pw_t *pw);
|
||||||
|
|
||||||
int copy_pws_idx (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, u64 gidd, const u64 cnt, pw_idx_t *dest);
|
int copy_pws_idx (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, u64 gidd, const u64 cnt, pw_idx_t *dest);
|
||||||
|
@ -528,7 +528,7 @@ static bool opencl_test_instruction (hashcat_ctx_t *hashcat_ctx, cl_context cont
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool read_kernel_binary (hashcat_ctx_t *hashcat_ctx, const char *kernel_file, size_t *kernel_lengths, char **kernel_sources)
|
bool read_kernel_binary (hashcat_ctx_t *hashcat_ctx, const char *kernel_file, size_t *kernel_lengths, char **kernel_sources)
|
||||||
{
|
{
|
||||||
HCFILE fp;
|
HCFILE fp;
|
||||||
|
|
||||||
@ -6377,11 +6377,9 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
// try CL_DEVICE_BOARD_NAME_AMD first, if it fails fall back to CL_DEVICE_NAME
|
// try CL_DEVICE_BOARD_NAME_AMD first, if it fails fall back to CL_DEVICE_NAME
|
||||||
// since AMD ROCm does not identify itself at this stage we simply check for return code from clGetDeviceInfo()
|
// since AMD ROCm does not identify itself at this stage we simply check for return code from clGetDeviceInfo()
|
||||||
|
|
||||||
#define CHECK_BOARD_NAME_AMD 1
|
|
||||||
|
|
||||||
cl_int rc_board_name_amd = CL_INVALID_VALUE;
|
cl_int rc_board_name_amd = CL_INVALID_VALUE;
|
||||||
|
|
||||||
if (CHECK_BOARD_NAME_AMD)
|
if (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)
|
||||||
{
|
{
|
||||||
//backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx;
|
//backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx;
|
||||||
|
|
||||||
@ -7869,6 +7867,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
|
|
||||||
backend_ctx->opencl_devices_active--;
|
backend_ctx->opencl_devices_active--;
|
||||||
backend_ctx->backend_devices_active--;
|
backend_ctx->backend_devices_active--;
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7884,6 +7883,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
|
|
||||||
backend_ctx->opencl_devices_active--;
|
backend_ctx->opencl_devices_active--;
|
||||||
backend_ctx->backend_devices_active--;
|
backend_ctx->backend_devices_active--;
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7984,6 +7984,8 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
// In case there are multiple hashcat instances starting at the same time this will cause GPU out of memory errors which otherwise would not exist.
|
// In case there are multiple hashcat instances starting at the same time this will cause GPU out of memory errors which otherwise would not exist.
|
||||||
// We will simply not run it if that device was skipped by the user.
|
// We will simply not run it if that device was skipped by the user.
|
||||||
|
|
||||||
|
if (device_param->device_global_mem)
|
||||||
|
{
|
||||||
#define MAX_ALLOC_CHECKS_CNT 8192
|
#define MAX_ALLOC_CHECKS_CNT 8192
|
||||||
#define MAX_ALLOC_CHECKS_SIZE (64 * 1024 * 1024)
|
#define MAX_ALLOC_CHECKS_SIZE (64 * 1024 * 1024)
|
||||||
|
|
||||||
@ -8068,6 +8070,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
|
|
||||||
hcfree (tmp_device);
|
hcfree (tmp_device);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
hc_clReleaseCommandQueue (hashcat_ctx, command_queue);
|
hc_clReleaseCommandQueue (hashcat_ctx, command_queue);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user