Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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
            };
        }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
        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
            };
        }
Esempio n. 5
0
        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];
            }
        }
Esempio n. 6
0
 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));
        }