mirror of
https://github.com/hashcat/hashcat.git
synced 2024-11-22 08:08:10 +00:00
Do not set -cl-std=XXX to workaround NEO driver bug causing to hang while compiling -m 22000
This commit is contained in:
parent
2b2a7ede66
commit
ba7163062d
@ -116,7 +116,6 @@
|
||||
- OpenCL Runtime: Do not run shared- and constant-memory size checks if their memory type is of type global memory (typically CPU)
|
||||
- OpenCL Runtime: Improve ROCm detection and make sure to not confuse with recent AMDGPU drivers
|
||||
- OpenCL Runtime: Not using amd_bytealign (amd_bitalign is fine) on AMDGPU driver drastically reduces JiT segfaults
|
||||
- OpenCL Runtime: Reenabled support for Intel GPU OpenCL runtime (Beignet and NEO) because a workaround was found (force -cl-std=CL2.0)
|
||||
- OpenCL Runtime: Unlocked maximum thread count for NVIDIA GPU
|
||||
- OpenCL Runtime: Update unstable mode warnings for Apple and AMDGPU drivers
|
||||
- OpenCL Runtime: Workaround JiT compiler error on AMDGPU driver compiling WPA-EAPOL-PBKDF2 OpenCL kernel
|
||||
|
@ -1280,6 +1280,7 @@ typedef struct hc_device_param
|
||||
|
||||
bool use_opencl12;
|
||||
bool use_opencl20;
|
||||
bool use_opencl21;
|
||||
|
||||
// AMD
|
||||
bool has_vadd;
|
||||
|
@ -5364,6 +5364,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
|
||||
device_param->use_opencl12 = false;
|
||||
device_param->use_opencl20 = false;
|
||||
device_param->use_opencl21 = false;
|
||||
|
||||
// device_name
|
||||
|
||||
@ -5648,12 +5649,14 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
cl_device_id **opencl_platforms_devices = backend_ctx->opencl_platforms_devices;
|
||||
cl_uint *opencl_platforms_devices_cnt = backend_ctx->opencl_platforms_devices_cnt;
|
||||
cl_uint *opencl_platforms_vendor_id = backend_ctx->opencl_platforms_vendor_id;
|
||||
char **opencl_platforms_version = backend_ctx->opencl_platforms_version;
|
||||
|
||||
for (u32 opencl_platforms_idx = 0; opencl_platforms_idx < opencl_platforms_cnt; opencl_platforms_idx++)
|
||||
{
|
||||
cl_device_id *opencl_platform_devices = opencl_platforms_devices[opencl_platforms_idx];
|
||||
cl_uint opencl_platform_devices_cnt = opencl_platforms_devices_cnt[opencl_platforms_idx];
|
||||
cl_uint opencl_platform_vendor_id = opencl_platforms_vendor_id[opencl_platforms_idx];
|
||||
char *opencl_platform_version = opencl_platforms_version[opencl_platforms_idx];
|
||||
|
||||
for (u32 opencl_platform_devices_idx = 0; opencl_platform_devices_idx < opencl_platform_devices_cnt; opencl_platform_devices_idx++, backend_devices_idx++, opencl_devices_cnt++)
|
||||
{
|
||||
@ -5677,8 +5680,30 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
|
||||
device_param->is_opencl = true;
|
||||
|
||||
// check OpenCL version
|
||||
|
||||
device_param->use_opencl12 = false;
|
||||
device_param->use_opencl20 = false;
|
||||
device_param->use_opencl21 = false;
|
||||
|
||||
int opencl_version_min = 0;
|
||||
int opencl_version_maj = 0;
|
||||
|
||||
if (sscanf (opencl_platform_version, "OpenCL %d.%d", &opencl_version_min, &opencl_version_maj) == 2)
|
||||
{
|
||||
if ((opencl_version_min == 1) && (opencl_version_maj == 2))
|
||||
{
|
||||
device_param->use_opencl12 = true;
|
||||
}
|
||||
else if ((opencl_version_min == 2) && (opencl_version_maj == 0))
|
||||
{
|
||||
device_param->use_opencl20 = true;
|
||||
}
|
||||
else if ((opencl_version_min == 2) && (opencl_version_maj == 1))
|
||||
{
|
||||
device_param->use_opencl21 = true;
|
||||
}
|
||||
}
|
||||
|
||||
size_t param_value_size = 0;
|
||||
|
||||
@ -5793,23 +5818,6 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
|
||||
device_param->opencl_device_c_version = opencl_device_c_version;
|
||||
|
||||
// check OpenCL version
|
||||
|
||||
int opencl_version_min = 0;
|
||||
int opencl_version_maj = 0;
|
||||
|
||||
if (sscanf (opencl_device_c_version, "OpenCL C %d.%d", &opencl_version_min, &opencl_version_maj) == 2)
|
||||
{
|
||||
if ((opencl_version_min == 1) && (opencl_version_maj == 2))
|
||||
{
|
||||
device_param->use_opencl12 = true;
|
||||
}
|
||||
else if ((opencl_version_min == 2) && (opencl_version_maj == 0))
|
||||
{
|
||||
device_param->use_opencl20 = true;
|
||||
}
|
||||
}
|
||||
|
||||
// max_compute_units
|
||||
|
||||
cl_uint device_processors = 0;
|
||||
@ -7740,8 +7748,9 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx)
|
||||
build_options_len += snprintf (build_options_buf + build_options_len, build_options_sz - build_options_len, "-D KERNEL_STATIC -I OpenCL -I %s ", folder_config->cpath_real);
|
||||
#endif
|
||||
|
||||
// workarounds reproduceable bugs on some OpenCL runtimes (Beignet and NEO)
|
||||
// ex: remove empty code in m04, m08 and m16 in OpenCL/m05600_a3-optimized.cl will break s04 kernel (not cracking anymore)
|
||||
/* currently disabled, hangs NEO drivers since 20.09.
|
||||
was required for NEO driver 20.08 to workaround the same issue!
|
||||
we go with the latest version
|
||||
|
||||
if (device_param->is_opencl == true)
|
||||
{
|
||||
@ -7753,7 +7762,12 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx)
|
||||
{
|
||||
build_options_len += snprintf (build_options_buf + build_options_len, build_options_sz - build_options_len, "-cl-std=CL2.0 ");
|
||||
}
|
||||
else if (device_param->use_opencl21 == true)
|
||||
{
|
||||
build_options_len += snprintf (build_options_buf + build_options_len, build_options_sz - build_options_len, "-cl-std=CL2.1 ");
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// we don't have sm_* on vendors not NV but it doesn't matter
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user