Ejemplo n.º 1
0
 private static bool NvThermalPoliciesSetLimit(int busId, ref NvGpuThermalLimit info)
 {
     if (NvapiNativeMethods.NvThermalPoliciesSetLimit == null)
     {
         return(false);
     }
     try {
         if (!HandlesByBusId.TryGetValue(busId, out NvPhysicalGpuHandle handle))
         {
             return(false);
         }
         var r = NvapiNativeMethods.NvThermalPoliciesSetLimit(handle, ref info);
         if (r != NvStatus.NVAPI_OK)
         {
             NTMinerConsole.DevError(() => $"{nameof(NvapiNativeMethods.NvThermalPoliciesSetLimit)} {r.ToString()}");
         }
         if (r == NvStatus.NVAPI_OK)
         {
             return(true);
         }
     }
     catch {
     }
     return(false);
 }
Ejemplo n.º 2
0
        private void SetTempLimit(int busId, int value)
        {
            value <<= 8;
            try {
                if (!NvThermalPoliciesGetInfo(busId, out NvGpuThermalInfo info))
                {
                    return;
                }
                if (value == 0)
                {
                    value = info.entries[0].def_temp;
                }
                else if (value > info.entries[0].max_temp)
                {
                    value = info.entries[0].max_temp;
                }
                else if (value < info.entries[0].min_temp)
                {
                    value = info.entries[0].min_temp;
                }

                NvGpuThermalLimit limit = NvThermalPoliciesGetLimit(busId);
                limit.flags            = 1;
                limit.entries[0].value = (uint)value;

                NvThermalPoliciesSetLimit(busId, ref limit);
            }
            catch {
            }
        }
Ejemplo n.º 3
0
        private NvGpuThermalLimit NvThermalPoliciesGetLimit(int busId)
        {
            NvGpuThermalLimit info = new NvGpuThermalLimit();

            if (NvapiNativeMethods.NvThermalPoliciesGetLimit == null)
            {
                return(info);
            }
            try {
                if (!HandlesByBusId.TryGetValue(busId, out NvPhysicalGpuHandle handle))
                {
                    return(info);
                }
                info.version = (uint)(VERSION2 | (Marshal.SizeOf(typeof(NvGpuThermalLimit))));
                var r = NvapiNativeMethods.NvThermalPoliciesGetLimit(handle, ref info);
                if (r != NvStatus.NVAPI_OK)
                {
                    NTMinerConsole.DevError(() => $"{nameof(NvapiNativeMethods.NvThermalPoliciesGetLimit)} {r.ToString()}");
                }
                if (r == NvStatus.NVAPI_OK)
                {
                    return(info);
                }
            }
            catch {
            }
            return(info);
        }
Ejemplo n.º 4
0
 private bool NvThermalPoliciesSetLimit(int busId, ref NvGpuThermalLimit info)
 {
     if (NvapiNativeMethods.NvThermalPoliciesSetLimit == null)
     {
         return(false);
     }
     try {
         if (!HandlesByBusId.TryGetValue(busId, out NvPhysicalGpuHandle handle))
         {
             return(false);
         }
         info.version = (uint)(VERSION2 | (Marshal.SizeOf(typeof(NvGpuThermalLimit))));
         var r = NvapiNativeMethods.NvThermalPoliciesSetLimit(handle, ref info);
         if (r != NvStatus.NVAPI_OK)
         {
             Write.DevError($"{nameof(NvapiNativeMethods.NvThermalPoliciesSetLimit)} {r.ToString()}");
         }
         if (r == NvStatus.NVAPI_OK)
         {
             return(true);
         }
     }
     catch {
     }
     return(false);
 }
Ejemplo n.º 5
0
 private static bool GetTempLimit(int busId, out int outCurrTemp, out int outMinTemp, out int outDefTemp, out int outMaxTemp)
 {
     outCurrTemp = 0;
     outMinTemp  = 0;
     outDefTemp  = 0;
     outMaxTemp  = 0;
     try {
         var r = GetThermalInfo(busId, out outMinTemp, out outDefTemp, out outMaxTemp);
         NvGpuThermalLimit limit = NvThermalPoliciesGetLimit(busId);
         outCurrTemp = (int)(limit.entries[0].value / 256);
         return(r);
     }
     catch {
         return(false);
     }
 }
Ejemplo n.º 6
0
 private bool NvThermalPoliciesSetLimit(int busId, ref NvGpuThermalLimit info)
 {
     if (NvapiNativeMethods.NvThermalPoliciesSetLimit == null)
     {
         return(false);
     }
     try {
         info.version = (uint)(VERSION2 | (Marshal.SizeOf(typeof(NvGpuThermalLimit))));
         var r = NvapiNativeMethods.NvThermalPoliciesSetLimit(HandlesByBusId[busId], ref info);
         if (r != NvStatus.OK)
         {
             Write.DevError($"{nameof(NvapiNativeMethods.NvThermalPoliciesSetLimit)} {r}");
         }
         if (r == NvStatus.OK)
         {
             return(true);
         }
     }
     catch {
     }
     return(false);
 }