コード例 #1
0
        private static IEnumerable <CardParam> FindCards(ControlMemory ctlm)
        {
            const int divider   = 1000;
            var       cardCount = ctlm.GpuEntries.Length;
            var       cards     = new CardParam[cardCount];

            for (uint i = 0; i < cardCount; i++)
            {
                var v1 = ctlm.GpuEntries[i];

                var flags        = v1.Flags;
                var voltageBoost = flags.HasFlag(MACM_SHARED_MEMORY_GPU_ENTRY_FLAG.CORE_VOLTAGE_BOOST);
                var voltage      = new CardMinMaxCurrent
                {
                    Current = voltageBoost ? v1.CoreVoltageBoostCur : (int)v1.CoreVoltageCur,
                    Max     = voltageBoost ? v1.CoreVoltageBoostMax : (int)v1.CoreVoltageMax,
                    Min     = voltageBoost ? v1.CoreVoltageBoostMin : (int)v1.CoreVoltageMin
                };
                var templimit = new CardMinMaxCurrent
                {
                    Current = v1.ThermalLimitCur,
                    Max     = v1.ThermalLimitMax,
                    Min     = v1.ThermalLimitMin
                };
                var voltagelimit = new CardMinMaxCurrent
                {
                    Current = v1.PowerLimitCur,
                    Max     = v1.PowerLimitMax,
                    Min     = v1.PowerLimitMin
                };
                var coreclockBoost = flags.HasFlag(MACM_SHARED_MEMORY_GPU_ENTRY_FLAG.CORE_CLOCK_BOOST);
                var coreclock      = new CardMinMaxCurrent
                {
                    Current = coreclockBoost ? v1.CoreClockBoostCur / divider : (int)v1.CoreClockCur / divider,
                    Max     = coreclockBoost ? v1.CoreClockBoostMax / divider : (int)v1.CoreClockMax / divider,
                    Min     = coreclockBoost ? v1.CoreClockBoostMin / divider : (int)v1.CoreClockMin / divider
                };
                var memoryclockBoost = flags.HasFlag(MACM_SHARED_MEMORY_GPU_ENTRY_FLAG.MEMORY_CLOCK_BOOST);
                var memoryclock      = new CardMinMaxCurrent
                {
                    Current = memoryclockBoost ? v1.MemoryClockBoostCur / divider : (int)v1.MemoryClockCur / divider,
                    Max     = memoryclockBoost ? v1.MemoryClockBoostMax / divider : (int)v1.MemoryClockMax / divider,
                    Min     = memoryclockBoost ? v1.MemoryClockBoostMin / divider : (int)v1.MemoryClockMin / divider
                };

                var fancontrol =
                    new CardMinMaxCurrent {
                    Current = v1.FanSpeedCur, Max = v1.FanSpeedMax, Min = v1.FanSpeedMin
                };
                var ismaster = v1.IsMaster;
                cards[i] = new CardParam(v1.Index, ismaster, voltage,
                                         templimit, voltagelimit, coreclock, memoryclock, fancontrol);
            }

            return(cards);
        }
コード例 #2
0
 public CardParam(int id, bool isMaster, CardMinMaxCurrent voltage, CardMinMaxCurrent tempLimit, CardMinMaxCurrent powerLimit,
                  CardMinMaxCurrent coreClock, CardMinMaxCurrent memoryClock, CardMinMaxCurrent fanSpeed)
 {
     Voltage     = voltage;
     IsMaster    = isMaster;
     TempLimit   = tempLimit;
     PowerLimit  = powerLimit;
     CoreClock   = coreClock;
     MemoryClock = memoryClock;
     FanSpeed    = fanSpeed;
     Id          = id;
 }
コード例 #3
0
 protected bool Equals(CardMinMaxCurrent other)
 {
     return(Min.Equals(other.Min) && Max.Equals(other.Max) && Current.Equals(other.Current));
 }