예제 #1
0
 private int GetTemperature(int gpuIndex)
 {
     try {
         if (!TryGetAtiGpu(gpuIndex, out ATIGPU gpu))
         {
             return(0);
         }
         if (gpu.OverdriveVersion >= 7)
         {
             var r = AdlNativeMethods.ADL2_OverdriveN_Temperature_Get(_context, gpu.AdapterIndex, ADLODNTemperatureType.CORE, out int temperature);
             if (r < AdlStatus.ADL_OK)
             {
                 NTMinerConsole.DevError(() => $"{nameof(AdlNativeMethods.ADL2_OverdriveN_Temperature_Get)} {r.ToString()}");
                 return(0);
             }
             return((int)(0.001f * temperature));
         }
         else
         {
             ADLTemperature info = new ADLTemperature();
             var            r    = AdlNativeMethods.ADL_Overdrive5_Temperature_Get(gpu.AdapterIndex, 0, ref info);
             if (r < AdlStatus.ADL_OK)
             {
                 NTMinerConsole.DevError(() => $"{nameof(AdlNativeMethods.ADL_Overdrive5_Temperature_Get)} {r.ToString()}");
                 return(0);
             }
             return((int)(0.001f * info.Temperature));
         }
     }
     catch {
     }
     return(0);
 }
예제 #2
0
 public int GetTemperature(int gpuIndex)
 {
     try {
         if (!TryGpuAdapterIndex(gpuIndex, out int adapterIndex))
         {
             return(0);
         }
         ADLTemperature info = new ADLTemperature();
         var            r    = AdlNativeMethods.ADL_Overdrive5_Temperature_Get(adapterIndex, 0, ref info);
         if (r < AdlStatus.ADL_OK)
         {
             Write.DevError($"{nameof(AdlNativeMethods.ADL_Overdrive5_Temperature_Get)} {r.ToString()}");
             return(0);
         }
         return((int)(0.001f * info.Temperature));
     }
     catch {
         return(0);
     }
 }