public override bool InitializeHardware() { Logger.Debug("Initializing hardware ..."); if (NvApi.NvApiEnumPhysicalGpUs == null || NvApi.NvApiGetPhysicalGpUsFromDisplay == null || NvApi.NvApiEnumNvidiaDisplayHandle == null) { Logger.Debug("Unable to init hardware, NvApiEnumPhysicalGpUs, NvApiEnumNvidiaDisplayHandle and NvApiGetPhysicalGpUsFromDisplay are null pointer"); return(false); } NvStatus status; var handles = new NvPhysicalGpuHandle[NvApi.MaxPhysicalGpus]; if ((status = NvApi.NvApiEnumPhysicalGpUs(handles, out var gpuCount)) != NvStatus.Ok) { Logger.Error($"Unable to enumerate physical gpus, the API status is: {status}"); return(false); } for (var gpuIndex = 0; gpuIndex < gpuCount; gpuIndex++) { var ngpu = new NVidiaGpu(gpuIndex, handles[gpuIndex]); Logger.Debug($"Adding GPU {ngpu}"); ngpu.InitializeSensors(); Hardware.Add(ngpu); } return(true); }
public SensorNVidiaMemory(NVidiaGpu gpu) : base(gpu) { _memAvail = new SensorElementNVidiaMemoryLoad("total"); _memUsed = new SensorElementNVidiaMemoryLoad("used"); _memFree = new SensorElementNVidiaMemoryLoad("free"); _memLoad = new SensorElementNVidiaMemoryUsage("load"); _sensors = new ISensorElement[] { _memAvail, _memUsed, _memFree, _memLoad }; }
public SensorNVidiaLoads(NVidiaGpu gpu) : base(gpu) { _loadCore = new SensorElementNVidiaLoad("core"); _loadFrameBuffer = new SensorElementNVidiaLoad("frame_buffer"); _loadVideoEngine = new SensorElementNVidiaLoad("video_engine"); _loadBus = new SensorElementNVidiaLoad("bus_interface"); _sensors = new ISensorElement[] { _loadCore, _loadFrameBuffer, _loadVideoEngine, _loadBus }; var states = ObtainPStates(); }
public SensorNVidiaClocks(NVidiaGpu gpu) : base(gpu) { IsSensorActive = NvApi.GetAllClocks != null; if (NvApi.GetAllClocks == null) { return; } _clockCore = new SensorElementNVidiaClocks("core"); _clockMemory = new SensorElementNVidiaClocks("memory"); _clockShader = new SensorElementNVidiaClocks("shader"); _sensors = new ISensorElement[] { _clockCore, _clockMemory, _clockShader }; }
public SensorNVidiaTemperature(NVidiaGpu gpu) : base(gpu) { IsSensorActive = NvApi.GetThermalSettings != null; if (NvApi.GetThermalSettings == null) { return; } var settings = ObtainThermalSettings(); _tempSensors = new SensorElementNVidiaTemp[settings.Count]; for (var i = 0; i < _tempSensors.Length; i++) { _tempSensors[i] = new SensorElementNVidiaTemp(i, settings.Sensor[i]); } _sensors = new ISensorElement[_tempSensors.Length]; for (var i = 0; i < _tempSensors.Length; i++) { _sensors[i] = _tempSensors[i]; } }
protected SensorBaseNVidiaLoad(NVidiaGpu gpu) : base(gpu) { Gpu = gpu; }
public override string GetReport() { NVidiaGpu nVidiaGpu = new NVidiaGpu(); nVidiaGpu.Name = name; if (displayHandle.HasValue && NVAPI.NvAPI_GetDisplayDriverVersion != null) { NvDisplayDriverVersion driverVersion = new NvDisplayDriverVersion(); driverVersion.Version = NVAPI.DISPLAY_DRIVER_VERSION_VER; if (NVAPI.NvAPI_GetDisplayDriverVersion(displayHandle.Value, ref driverVersion) == NvStatus.OK) { nVidiaGpu.DriverVersion = (driverVersion.DriverVersion / 100).ToString() + "." + (driverVersion.DriverVersion % 100).ToString("00", CultureInfo.InvariantCulture); nVidiaGpu.DriverBranch = driverVersion.BuildBranch; } } if (NVAPI.NvAPI_GPU_GetPCIIdentifiers != null) { uint deviceId, subSystemId, revisionId, extDeviceId; NvStatus status = NVAPI.NvAPI_GPU_GetPCIIdentifiers(handle, out deviceId, out subSystemId, out revisionId, out extDeviceId); if (status == NvStatus.OK) { nVidiaGpu.DeviceID = deviceId.ToString("X", CultureInfo.InvariantCulture); nVidiaGpu.RevisionID = revisionId.ToString("X", CultureInfo.InvariantCulture); } } if (NVAPI.NvAPI_GPU_GetThermalSettings != null) { NvGPUThermalSettings settings = new NvGPUThermalSettings(); settings.Version = NVAPI.GPU_THERMAL_SETTINGS_VER; settings.Count = NVAPI.MAX_THERMAL_SENSORS_PER_GPU; settings.Sensor = new NvSensor[NVAPI.MAX_THERMAL_SENSORS_PER_GPU]; NvStatus status = NVAPI.NvAPI_GPU_GetThermalSettings(handle, (int)NvThermalTarget.ALL, ref settings); if (status == NvStatus.OK) { nVidiaGpu.CurrentTemp = (long)settings.Sensor[0].CurrentTemp; } } else { nVidiaGpu.CurrentTemp = 0; } if (NVAPI.NvAPI_GetDisplayDriverMemoryInfo != null && displayHandle.HasValue) { NvDisplayDriverMemoryInfo memoryInfo = new NvDisplayDriverMemoryInfo(); memoryInfo.Version = NVAPI.DISPLAY_DRIVER_MEMORY_INFO_VER; memoryInfo.Values = new uint[NVAPI.MAX_MEMORY_VALUES_PER_GPU]; NvStatus status = NVAPI.NvAPI_GetDisplayDriverMemoryInfo( displayHandle.Value, ref memoryInfo); if (status == NvStatus.OK) { nVidiaGpu.TotalMemory = memoryInfo.Values[0]; nVidiaGpu.AvailableMemory = memoryInfo.Values[1]; } else { nVidiaGpu.TotalMemory = 21; nVidiaGpu.AvailableMemory = 37; } } return(JsonSerializer.Serialize(nVidiaGpu)); }