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); }
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 { } }
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); }
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); }
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); } }
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); }