mirror of
https://github.com/hashcat/hashcat.git
synced 2024-11-24 00:51:05 +00:00
Finally added: Temperature limit check on NVidia + Windows to notice User about performance drop. This is a NvAPI undocumented feature. Thanks to @philsmd for information gathering, an outstanding job
This commit is contained in:
parent
2e706edc18
commit
79c44186fc
@ -3818,6 +3818,8 @@ static void *thread_monitor (void *p)
|
||||
#ifdef HAVE_HWMON
|
||||
uint hwmon_check = 0;
|
||||
|
||||
int slowdown_warnings = 0;
|
||||
|
||||
// these variables are mainly used for fan control
|
||||
|
||||
int *fan_speed_chgd = (int *) mycalloc (data.devices_cnt, sizeof (int));
|
||||
@ -3882,6 +3884,62 @@ static void *thread_monitor (void *p)
|
||||
|
||||
#ifdef HAVE_HWMON
|
||||
|
||||
if (hwmon_check == 1)
|
||||
{
|
||||
hc_thread_mutex_lock (mux_adl);
|
||||
|
||||
for (uint device_id = 0; device_id < data.devices_cnt; device_id++)
|
||||
{
|
||||
hc_device_param_t *device_param = &data.devices_param[device_id];
|
||||
|
||||
if (device_param->skipped) continue;
|
||||
|
||||
if (device_param->device_vendor_id == VENDOR_ID_NV)
|
||||
{
|
||||
if (data.hm_nvapi)
|
||||
{
|
||||
NV_GPU_PERF_POLICIES_INFO_PARAMS_V1 perfPolicies_info = { 0 };
|
||||
NV_GPU_PERF_POLICIES_STATUS_PARAMS_V1 perfPolicies_status = { 0 };
|
||||
|
||||
perfPolicies_info.version = MAKE_NVAPI_VERSION (NV_GPU_PERF_POLICIES_INFO_PARAMS_V1, 1);
|
||||
perfPolicies_status.version = MAKE_NVAPI_VERSION (NV_GPU_PERF_POLICIES_STATUS_PARAMS_V1, 1);
|
||||
|
||||
hm_NvAPI_GPU_GetPerfPoliciesInfo (data.hm_nvapi, data.hm_device[device_id].nvapi, &perfPolicies_info);
|
||||
|
||||
perfPolicies_status.info_value = perfPolicies_info.info_value;
|
||||
|
||||
hm_NvAPI_GPU_GetPerfPoliciesStatus (data.hm_nvapi, data.hm_device[device_id].nvapi, &perfPolicies_status);
|
||||
|
||||
if (perfPolicies_status.throttle & 2)
|
||||
{
|
||||
if (slowdown_warnings < 3)
|
||||
{
|
||||
if (data.quiet == 0) clear_prompt ();
|
||||
|
||||
log_info ("WARNING: Drivers temperature threshold hit on GPU #%d, expect performance to drop...", device_id + 1);
|
||||
|
||||
if (slowdown_warnings == 2)
|
||||
{
|
||||
log_info ("");
|
||||
}
|
||||
|
||||
if (data.quiet == 0) fprintf (stdout, "%s", PROMPT);
|
||||
if (data.quiet == 0) fflush (stdout);
|
||||
|
||||
slowdown_warnings++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
slowdown_warnings = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hc_thread_mutex_unlock (mux_adl);
|
||||
}
|
||||
|
||||
if (hwmon_check == 1)
|
||||
{
|
||||
hc_thread_mutex_lock (mux_adl);
|
||||
@ -13626,9 +13684,12 @@ int main (int argc, char **argv)
|
||||
if (device_param->device_vendor_id == VENDOR_ID_AMD_USE_INTEL)
|
||||
{
|
||||
if (data.force == 0)
|
||||
{
|
||||
if (algorithm_pos == 0)
|
||||
{
|
||||
log_info ("Device #%u: WARNING: not native intel opencl runtime, expect massive speed loss", device_id + 1);
|
||||
log_info (" You can use --force to override this but do not post error reports if you do so");
|
||||
}
|
||||
|
||||
device_param->skipped = 1;
|
||||
}
|
||||
@ -14207,14 +14268,24 @@ int main (int argc, char **argv)
|
||||
|
||||
const uint platform_devices_id = device_param->platform_devices_id;
|
||||
|
||||
if (device_param->device_vendor_id == VENDOR_ID_NV)
|
||||
{
|
||||
memcpy (&data.hm_device[device_id], &hm_adapters_nvml[platform_devices_id], sizeof (hm_attrs_t));
|
||||
}
|
||||
|
||||
if (device_param->device_vendor_id == VENDOR_ID_AMD)
|
||||
{
|
||||
memcpy (&data.hm_device[device_id], &hm_adapters_adl[platform_devices_id], sizeof (hm_attrs_t));
|
||||
data.hm_device[device_id].adl = hm_adapters_adl[platform_devices_id].adl;
|
||||
data.hm_device[device_id].nvapi = 0;
|
||||
data.hm_device[device_id].nvml = 0;
|
||||
data.hm_device[device_id].od_version = hm_adapters_adl[platform_devices_id].od_version;
|
||||
data.hm_device[device_id].fan_get_supported = hm_adapters_adl[platform_devices_id].fan_get_supported;
|
||||
data.hm_device[device_id].fan_set_supported = hm_adapters_adl[platform_devices_id].fan_set_supported;
|
||||
}
|
||||
|
||||
if (device_param->device_vendor_id == VENDOR_ID_NV)
|
||||
{
|
||||
data.hm_device[device_id].adl = 0;
|
||||
data.hm_device[device_id].nvapi = hm_adapters_nvapi[platform_devices_id].nvapi;
|
||||
data.hm_device[device_id].nvml = hm_adapters_nvml[platform_devices_id].nvml;
|
||||
data.hm_device[device_id].od_version = 0;
|
||||
data.hm_device[device_id].fan_get_supported = hm_adapters_nvml[platform_devices_id].fan_get_supported;
|
||||
data.hm_device[device_id].fan_set_supported = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user