mirror of
https://github.com/GOSTSec/ccminer
synced 2025-02-02 09:54:26 +00:00
nvml: clocks cleanup + pstate check (still not supported)
This commit is contained in:
parent
cbd7865a79
commit
e99ff6c15b
4
api.cpp
4
api.cpp
@ -246,7 +246,7 @@ static void gpuhwinfos(int gpu_id)
|
|||||||
cgpu->gpu_temp = gpu_temp(cgpu);
|
cgpu->gpu_temp = gpu_temp(cgpu);
|
||||||
cgpu->gpu_fan = (uint16_t) gpu_fanpercent(cgpu);
|
cgpu->gpu_fan = (uint16_t) gpu_fanpercent(cgpu);
|
||||||
cgpu->gpu_fan_rpm = (uint16_t) gpu_fanrpm(cgpu);
|
cgpu->gpu_fan_rpm = (uint16_t) gpu_fanrpm(cgpu);
|
||||||
cgpu->gpu_pstate = gpu_pstate(cgpu);
|
cgpu->gpu_pstate = (int16_t) gpu_pstate(cgpu);
|
||||||
gpu_info(cgpu);
|
gpu_info(cgpu);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -254,7 +254,7 @@ static void gpuhwinfos(int gpu_id)
|
|||||||
|
|
||||||
memset(pstate, 0, sizeof(pstate));
|
memset(pstate, 0, sizeof(pstate));
|
||||||
if (cgpu->gpu_pstate != -1)
|
if (cgpu->gpu_pstate != -1)
|
||||||
snprintf(pstate, sizeof(pstate), "P%hu", cgpu->gpu_pstate);
|
snprintf(pstate, sizeof(pstate), "P%d", (int) cgpu->gpu_pstate);
|
||||||
|
|
||||||
card = device_name[gpu_id];
|
card = device_name[gpu_id];
|
||||||
|
|
||||||
|
24
nvml.cpp
24
nvml.cpp
@ -271,29 +271,27 @@ int nvml_set_clocks(nvml_handle *nvmlh, int dev_id)
|
|||||||
if (gpu_clocks_changed[dev_id])
|
if (gpu_clocks_changed[dev_id])
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
int c = nvmlh->nvml_cuda_device_id[n];
|
if (!device_gpu_clocks[dev_id] && !device_mem_clocks[dev_id])
|
||||||
if (!device_gpu_clocks[c] && !device_mem_clocks[c])
|
|
||||||
return 0; // nothing to do
|
return 0; // nothing to do
|
||||||
|
|
||||||
// applog(LOG_DEBUG, "device %d cuda %d nvml %d", dev_id, c, n);
|
|
||||||
if (nvmlh->app_clocks[n] != NVML_FEATURE_ENABLED) {
|
if (nvmlh->app_clocks[n] != NVML_FEATURE_ENABLED) {
|
||||||
applog(LOG_WARNING, "GPU #%d: NVML application clock feature is not allowed!", c);
|
applog(LOG_WARNING, "GPU #%d: NVML application clock feature is not allowed!", dev_id);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
nvmlh->nvmlDeviceGetDefaultApplicationsClock(nvmlh->devs[n], NVML_CLOCK_MEM, &mem_clk);
|
nvmlh->nvmlDeviceGetDefaultApplicationsClock(nvmlh->devs[n], NVML_CLOCK_MEM, &mem_clk);
|
||||||
rc = nvmlh->nvmlDeviceGetDefaultApplicationsClock(nvmlh->devs[n], NVML_CLOCK_GRAPHICS, &gpu_clk);
|
rc = nvmlh->nvmlDeviceGetDefaultApplicationsClock(nvmlh->devs[n], NVML_CLOCK_GRAPHICS, &gpu_clk);
|
||||||
if (rc != NVML_SUCCESS) {
|
if (rc != NVML_SUCCESS) {
|
||||||
applog(LOG_WARNING, "GPU #%d: unable to query application clocks", c);
|
applog(LOG_WARNING, "GPU #%d: unable to query application clocks", dev_id);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opt_debug)
|
if (opt_debug)
|
||||||
applog(LOG_DEBUG, "GPU #%d: default clocks are %u/%u", c, mem_clk, gpu_clk);
|
applog(LOG_DEBUG, "GPU #%d: default clocks are %u/%u", dev_id, mem_clk, gpu_clk);
|
||||||
|
|
||||||
// get application config values
|
// get application config values
|
||||||
if (device_mem_clocks[c]) mem_clk = device_mem_clocks[c];
|
if (device_mem_clocks[dev_id]) mem_clk = device_mem_clocks[dev_id];
|
||||||
if (device_gpu_clocks[c]) gpu_clk = device_gpu_clocks[c];
|
if (device_gpu_clocks[dev_id]) gpu_clk = device_gpu_clocks[dev_id];
|
||||||
|
|
||||||
uint32_t nclocks, clocks[128] = { 0 };
|
uint32_t nclocks, clocks[128] = { 0 };
|
||||||
nvmlh->nvmlDeviceGetSupportedGraphicsClocks(nvmlh->devs[n], mem_clk, &nclocks, NULL);
|
nvmlh->nvmlDeviceGetSupportedGraphicsClocks(nvmlh->devs[n], mem_clk, &nclocks, NULL);
|
||||||
@ -301,7 +299,7 @@ int nvml_set_clocks(nvml_handle *nvmlh, int dev_id)
|
|||||||
nvmlh->nvmlDeviceGetSupportedGraphicsClocks(nvmlh->devs[n], mem_clk, &nclocks, clocks);
|
nvmlh->nvmlDeviceGetSupportedGraphicsClocks(nvmlh->devs[n], mem_clk, &nclocks, clocks);
|
||||||
for (unsigned int u=0; u < nclocks; u++) {
|
for (unsigned int u=0; u < nclocks; u++) {
|
||||||
// ordered desc, so get first
|
// ordered desc, so get first
|
||||||
if (clocks[u] <= device_gpu_clocks[c]) {
|
if (clocks[u] <= gpu_clk) {
|
||||||
gpu_clk = clocks[u];
|
gpu_clk = clocks[u];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -309,9 +307,9 @@ int nvml_set_clocks(nvml_handle *nvmlh, int dev_id)
|
|||||||
|
|
||||||
rc = nvmlh->nvmlDeviceSetApplicationsClocks(nvmlh->devs[n], mem_clk, gpu_clk);
|
rc = nvmlh->nvmlDeviceSetApplicationsClocks(nvmlh->devs[n], mem_clk, gpu_clk);
|
||||||
if (rc == NVML_SUCCESS)
|
if (rc == NVML_SUCCESS)
|
||||||
applog(LOG_INFO, "GPU #%d: application clocks set to %u/%u", c, mem_clk, gpu_clk);
|
applog(LOG_INFO, "GPU #%d: application clocks set to %u/%u", dev_id, mem_clk, gpu_clk);
|
||||||
else {
|
else {
|
||||||
applog(LOG_ERR, "GPU #%d: %u/%u - %s", c, mem_clk, gpu_clk, nvmlh->nvmlErrorString(rc));
|
applog(LOG_ERR, "GPU #%d: %u/%u - %s", dev_id, mem_clk, gpu_clk, nvmlh->nvmlErrorString(rc));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -331,11 +329,9 @@ int nvml_reset_clocks(nvml_handle *nvmlh, int dev_id)
|
|||||||
if (!gpu_clocks_changed[dev_id])
|
if (!gpu_clocks_changed[dev_id])
|
||||||
return 0; // nothing to do
|
return 0; // nothing to do
|
||||||
|
|
||||||
int c = nvmlh->nvml_cuda_device_id[n];
|
|
||||||
|
|
||||||
rc = nvmlh->nvmlDeviceResetApplicationsClocks(nvmlh->devs[n]);
|
rc = nvmlh->nvmlDeviceResetApplicationsClocks(nvmlh->devs[n]);
|
||||||
if (rc != NVML_SUCCESS) {
|
if (rc != NVML_SUCCESS) {
|
||||||
applog(LOG_WARNING, "GPU #%d: unable to reset application clocks", c);
|
applog(LOG_WARNING, "GPU #%d: unable to reset application clocks", dev_id);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
gpu_clocks_changed[dev_id] = 0;
|
gpu_clocks_changed[dev_id] = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user