mirror of
https://github.com/GOSTSec/ccminer
synced 2025-02-08 12:54:19 +00:00
nvml: clean up and fix retorted bus id bug in api
This commit is contained in:
parent
94c9945fe6
commit
7bb86defcc
144
nvml.cpp
144
nvml.cpp
@ -200,14 +200,14 @@ wrap_nvml_handle * wrap_nvml_create()
|
|||||||
nvmlh->cuda_nvml_device_id[i] = -1;
|
nvmlh->cuda_nvml_device_id[i] = -1;
|
||||||
|
|
||||||
if (cudaGetDeviceProperties(&props, i) == cudaSuccess) {
|
if (cudaGetDeviceProperties(&props, i) == cudaSuccess) {
|
||||||
int j;
|
|
||||||
device_bus_ids[i] = props.pciBusID;
|
device_bus_ids[i] = props.pciBusID;
|
||||||
for (j = 0; j<nvmlh->nvml_gpucount; j++) {
|
for (int j = 0; j < nvmlh->nvml_gpucount; j++) {
|
||||||
if ((nvmlh->nvml_pci_domain_id[j] == (uint32_t) props.pciDomainID) &&
|
if ((nvmlh->nvml_pci_domain_id[j] == (uint32_t) props.pciDomainID) &&
|
||||||
(nvmlh->nvml_pci_bus_id[j] == (uint32_t) props.pciBusID) &&
|
(nvmlh->nvml_pci_bus_id[j] == (uint32_t) props.pciBusID) &&
|
||||||
(nvmlh->nvml_pci_device_id[j] == (uint32_t) props.pciDeviceID)) {
|
(nvmlh->nvml_pci_device_id[j] == (uint32_t) props.pciDeviceID)) {
|
||||||
if (opt_debug)
|
if (opt_debug)
|
||||||
applog(LOG_DEBUG, "CUDA GPU[%d] matches NVML GPU[%d]", i, j);
|
applog(LOG_DEBUG, "CUDA GPU#%d matches NVML GPU %d by busId %u",
|
||||||
|
i, j, (uint32_t) props.pciBusID);
|
||||||
nvmlh->nvml_cuda_device_id[j] = i;
|
nvmlh->nvml_cuda_device_id[j] = i;
|
||||||
nvmlh->cuda_nvml_device_id[i] = j;
|
nvmlh->cuda_nvml_device_id[i] = j;
|
||||||
}
|
}
|
||||||
@ -275,24 +275,6 @@ int wrap_nvml_get_fanpcnt(wrap_nvml_handle *nvmlh, int cudaindex, unsigned int *
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Not Supported on 750Ti 340.23, 346.16 neither */
|
|
||||||
int wrap_nvml_get_clock(wrap_nvml_handle *nvmlh, int cudaindex, int type, unsigned int *freq)
|
|
||||||
{
|
|
||||||
int gpuindex = nvmlh->cuda_nvml_device_id[cudaindex];
|
|
||||||
if (gpuindex < 0 || gpuindex >= nvmlh->nvml_gpucount)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
// wrap_nvmlReturn_t rc = nvmlh->nvmlDeviceGetApplicationsClock(nvmlh->devs[gpuindex], (wrap_nvmlClockType_t)type, freq);
|
|
||||||
wrap_nvmlReturn_t rc = nvmlh->nvmlDeviceGetClockInfo(nvmlh->devs[gpuindex], (wrap_nvmlClockType_t) type, freq);
|
|
||||||
if (rc != WRAPNVML_SUCCESS) {
|
|
||||||
//if (opt_debug)
|
|
||||||
// applog(LOG_DEBUG, "nvmlDeviceGetClockInfo: %s", nvmlh->nvmlErrorString(rc));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Not Supported on 750Ti 340.23 */
|
/* Not Supported on 750Ti 340.23 */
|
||||||
int wrap_nvml_get_power_usage(wrap_nvml_handle *nvmlh, int cudaindex, unsigned int *milliwatts)
|
int wrap_nvml_get_power_usage(wrap_nvml_handle *nvmlh, int cudaindex, unsigned int *milliwatts)
|
||||||
{
|
{
|
||||||
@ -425,31 +407,6 @@ int nvapi_fanspeed(unsigned int devNum, unsigned int *speed)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int nvapi_getclock(unsigned int devNum, unsigned int *freq)
|
|
||||||
{
|
|
||||||
NvAPI_Status ret;
|
|
||||||
|
|
||||||
if (devNum >= nvapi_dev_cnt)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
NV_GPU_CLOCK_FREQUENCIES_V2 clocks;
|
|
||||||
clocks.version = NV_GPU_CLOCK_FREQUENCIES_VER_2;
|
|
||||||
clocks.ClockType = NV_GPU_CLOCK_FREQUENCIES_CURRENT_FREQ; // CURRENT/BASE/BOOST
|
|
||||||
ret = NvAPI_GPU_GetAllClockFrequencies(phys[devNum], &clocks);
|
|
||||||
if (ret != NVAPI_OK) {
|
|
||||||
NvAPI_ShortString string;
|
|
||||||
NvAPI_GetErrorMessage(ret, string);
|
|
||||||
if (opt_debug)
|
|
||||||
applog(LOG_DEBUG, "NVAPI NvAPI_GPU_GetAllClockFrequencies: %s", string);
|
|
||||||
return -1;
|
|
||||||
} else {
|
|
||||||
// GRAPHICS/MEMORY
|
|
||||||
(*freq) = (unsigned int)clocks.domain[NVAPI_GPU_PUBLIC_CLOCK_GRAPHICS].frequency;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int nvapi_getpstate(unsigned int devNum, unsigned int *power)
|
int nvapi_getpstate(unsigned int devNum, unsigned int *power)
|
||||||
{
|
{
|
||||||
NvAPI_Status ret;
|
NvAPI_Status ret;
|
||||||
@ -519,15 +476,6 @@ int nvapi_getinfo(unsigned int devNum, char *desc)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int nvapi_getbusid(unsigned int devNum, int *busid)
|
|
||||||
{
|
|
||||||
if (devNum >= 0 && devNum <= 8) {
|
|
||||||
(*busid) = device_bus_ids[devNum];
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int wrap_nvapi_init()
|
int wrap_nvapi_init()
|
||||||
{
|
{
|
||||||
int num_gpus = cuda_num_devices();
|
int num_gpus = cuda_num_devices();
|
||||||
@ -567,8 +515,8 @@ int wrap_nvapi_init()
|
|||||||
if (ret == NVAPI_OK && busId == device_bus_ids[g]) {
|
if (ret == NVAPI_OK && busId == device_bus_ids[g]) {
|
||||||
nvapi_dev_map[g] = i;
|
nvapi_dev_map[g] = i;
|
||||||
if (opt_debug)
|
if (opt_debug)
|
||||||
applog(LOG_DEBUG, "CUDA GPU[%d] matches NVAPI GPU[%d]",
|
applog(LOG_DEBUG, "CUDA GPU#%d matches NVAPI GPU %d by busId %u",
|
||||||
g, i);
|
g, i, busId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -657,7 +605,7 @@ int gpu_busid(struct cgpu_info *gpu)
|
|||||||
}
|
}
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
if (support == -1) {
|
if (support == -1) {
|
||||||
nvapi_getbusid(nvapi_dev_map[gpu->gpu_id], &busid);
|
busid = device_bus_ids[gpu->gpu_id];
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return busid;
|
return busid;
|
||||||
@ -675,6 +623,7 @@ unsigned int gpu_power(struct cgpu_info *gpu)
|
|||||||
if (support == -1) {
|
if (support == -1) {
|
||||||
unsigned int pct = 0;
|
unsigned int pct = 0;
|
||||||
nvapi_getusage(nvapi_dev_map[gpu->gpu_id], &pct);
|
nvapi_getusage(nvapi_dev_map[gpu->gpu_id], &pct);
|
||||||
|
mw = pct; // to fix
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return mw;
|
return mw;
|
||||||
@ -704,82 +653,3 @@ int gpu_clocks(struct cgpu_info *gpu)
|
|||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* strings /usr/lib/nvidia-340/libnvidia-ml.so | grep nvmlDeviceGet | grep -v : | sort | uniq
|
|
||||||
|
|
||||||
nvmlDeviceGetAccountingBufferSize
|
|
||||||
nvmlDeviceGetAccountingMode
|
|
||||||
nvmlDeviceGetAccountingPids
|
|
||||||
nvmlDeviceGetAccountingStats
|
|
||||||
nvmlDeviceGetAPIRestriction
|
|
||||||
nvmlDeviceGetApplicationsClock
|
|
||||||
nvmlDeviceGetAutoBoostedClocksEnabled
|
|
||||||
nvmlDeviceGetBAR1MemoryInfo
|
|
||||||
nvmlDeviceGetBoardId
|
|
||||||
nvmlDeviceGetBrand
|
|
||||||
nvmlDeviceGetBridgeChipInfo
|
|
||||||
* nvmlDeviceGetClockInfo
|
|
||||||
nvmlDeviceGetComputeMode
|
|
||||||
nvmlDeviceGetComputeRunningProcesses
|
|
||||||
nvmlDeviceGetCount
|
|
||||||
nvmlDeviceGetCount_v2
|
|
||||||
nvmlDeviceGetCpuAffinity
|
|
||||||
nvmlDeviceGetCurrentClocksThrottleReasons
|
|
||||||
nvmlDeviceGetCurrPcieLinkGeneration
|
|
||||||
nvmlDeviceGetCurrPcieLinkWidth
|
|
||||||
nvmlDeviceGetDecoderUtilization
|
|
||||||
nvmlDeviceGetDefaultApplicationsClock
|
|
||||||
nvmlDeviceGetDetailedEccErrors
|
|
||||||
nvmlDeviceGetDisplayActive
|
|
||||||
nvmlDeviceGetDisplayMode
|
|
||||||
nvmlDeviceGetDriverModel
|
|
||||||
nvmlDeviceGetEccMode
|
|
||||||
nvmlDeviceGetEncoderUtilization
|
|
||||||
nvmlDeviceGetEnforcedPowerLimit
|
|
||||||
* nvmlDeviceGetFanSpeed
|
|
||||||
nvmlDeviceGetGpuOperationMode
|
|
||||||
nvmlDeviceGetHandleByIndex
|
|
||||||
* nvmlDeviceGetHandleByIndex_v2
|
|
||||||
nvmlDeviceGetHandleByPciBusId
|
|
||||||
nvmlDeviceGetHandleByPciBusId_v2
|
|
||||||
nvmlDeviceGetHandleBySerial
|
|
||||||
nvmlDeviceGetHandleByUUID
|
|
||||||
nvmlDeviceGetIndex
|
|
||||||
nvmlDeviceGetInforomConfigurationChecksum
|
|
||||||
nvmlDeviceGetInforomImageVersion
|
|
||||||
nvmlDeviceGetInforomVersion
|
|
||||||
nvmlDeviceGetMaxClockInfo
|
|
||||||
nvmlDeviceGetMaxPcieLinkGeneration
|
|
||||||
nvmlDeviceGetMaxPcieLinkWidth
|
|
||||||
nvmlDeviceGetMemoryErrorCounter
|
|
||||||
nvmlDeviceGetMemoryInfo
|
|
||||||
nvmlDeviceGetMinorNumber
|
|
||||||
nvmlDeviceGetMultiGpuBoard
|
|
||||||
* nvmlDeviceGetName
|
|
||||||
* nvmlDeviceGetPciInfo
|
|
||||||
nvmlDeviceGetPciInfo_v2
|
|
||||||
* nvmlDeviceGetPerformanceState
|
|
||||||
nvmlDeviceGetPersistenceMode
|
|
||||||
nvmlDeviceGetPowerManagementDefaultLimit
|
|
||||||
nvmlDeviceGetPowerManagementLimit
|
|
||||||
nvmlDeviceGetPowerManagementLimitConstraints
|
|
||||||
nvmlDeviceGetPowerManagementMode
|
|
||||||
nvmlDeviceGetPowerState (deprecated)
|
|
||||||
* nvmlDeviceGetPowerUsage
|
|
||||||
nvmlDeviceGetRetiredPages
|
|
||||||
nvmlDeviceGetRetiredPagesPendingStatus
|
|
||||||
nvmlDeviceGetSamples
|
|
||||||
nvmlDeviceGetSerial
|
|
||||||
nvmlDeviceGetSupportedClocksThrottleReasons
|
|
||||||
nvmlDeviceGetSupportedEventTypes
|
|
||||||
nvmlDeviceGetSupportedGraphicsClocks
|
|
||||||
nvmlDeviceGetSupportedMemoryClocks
|
|
||||||
nvmlDeviceGetTemperature
|
|
||||||
nvmlDeviceGetTemperatureThreshold
|
|
||||||
nvmlDeviceGetTotalEccErrors
|
|
||||||
nvmlDeviceGetUtilizationRates
|
|
||||||
nvmlDeviceGetUUID
|
|
||||||
nvmlDeviceGetVbiosVersion
|
|
||||||
nvmlDeviceGetViolationStatus
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
6
nvml.h
6
nvml.h
@ -111,12 +111,6 @@ int wrap_nvml_get_tempC(wrap_nvml_handle *nvmlh,
|
|||||||
int wrap_nvml_get_fanpcnt(wrap_nvml_handle *nvmlh,
|
int wrap_nvml_get_fanpcnt(wrap_nvml_handle *nvmlh,
|
||||||
int gpuindex, unsigned int *fanpcnt);
|
int gpuindex, unsigned int *fanpcnt);
|
||||||
|
|
||||||
/*
|
|
||||||
* Query the current GPU speed from the CUDA device ID
|
|
||||||
*/
|
|
||||||
int wrap_nvml_get_clock(wrap_nvml_handle *nvmlh,
|
|
||||||
int gpuindex, int clktype, unsigned int *freq);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Query the current GPU power usage in millwatts from the CUDA device ID
|
* Query the current GPU power usage in millwatts from the CUDA device ID
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user