示例#1
1
        private static void TestRDTSCP()
        {
            if (!CPUID.ISSupported(CPUID.CPUIDFeature.InvariantTSC))
            {
                Console.WriteLine("Invariant TSC is not supported, RDTSC isn't reliable as a wall clock");
            }
            const int LOOP  = 1000000;
            var       sw    = Stopwatch.StartNew();
            var       start = Intrinsincs.RDTSCP();

            for (var i = 0; i < LOOP; i++)
            {
                Intrinsincs.RDTSCP();
            }
            var end = Intrinsincs.RDTSCP();

            sw.Stop();
            Console.WriteLine("SW:     {0}ms", sw.ElapsedMilliseconds);
            Console.WriteLine("RDTSCP: {0}ms", (end - start) / MHZ);
            Console.WriteLine("RDTSCP: {0}cycles", (end - start) / LOOP);
        }
示例#2
0
        private string GetCryptoPassword()
        {
            string passwd = Server.GlobalInstance.TokenCryptPassword;

            if (string.IsNullOrEmpty(passwd))
            {
                if (!string.IsNullOrEmpty(cryptoPasswd))
                {
                    return(cryptoPasswd);
                }

                string cpuId = CPUID.GetCPUIdentifier();
                string guid  = Guid.ToString().Replace("-", "");

                string str    = CreateContentString();
                byte[] sha256 = Encoding.ASCII.GetBytes(str);

                int    lenght = sha256.Length;
                string random = new Random(lenght).Next().ToString();

                cryptoPasswd = $"{cpuId}{guid}{random}";
                return(cryptoPasswd);
            }
            else
            {
                return(passwd);
            }
        }
示例#3
0
        static public void Main(string[] args)
        {
            Intrinsincs.Init();
            TestCPUID();
            TestBSWAP32();
            //TestBSWAP64();
            TestBSF16();
            TestBSF32();
            TestBSF64();
            TestBSR16();
            TestBSR32();
            TestBSR64();

            if (CPUID.ISSupported(CPUID.CPUIDFeature.POPCNT))
            {
                TestPOPCNT16();
                TestPOPCNT32();
                TestPOPCNT64();
            }
            else
            {
                Console.WriteLine("POPCNT not supported, skipping");
            }

            TestRDTSC();
            if (CPUID.ISSupported(CPUID.CPUIDFeature.RDTSCP))
            {
                TestRDTSCP();
            }
            else
            {
                Console.WriteLine("RDTSCP not supported, skipping");
            }
        }
示例#4
0
        private static CPUID[][] GroupThreadsByCore(IEnumerable <CPUID> threads)
        {
            SortedDictionary <uint, List <CPUID> > cores =
                new SortedDictionary <uint, List <CPUID> >();

            foreach (CPUID thread in threads)
            {
                List <CPUID> coreList;
                cores.TryGetValue(thread.CoreId, out coreList);
                if (coreList == null)
                {
                    coreList = new List <CPUID>();
                    cores.Add(thread.CoreId, coreList);
                }
                coreList.Add(thread);
            }

            CPUID[][] coreThreads = new CPUID[cores.Count][];
            int       index       = 0;

            foreach (List <CPUID> list in cores.Values)
            {
                coreThreads[index] = list.ToArray();
                index++;
            }
            return(coreThreads);
        }
示例#5
0
        // CPU aff set from NHM
        protected override NiceHashProcess _Start()
        {
            NiceHashProcess P = base._Start();

            if (CPUs.Count > 0 && CPUs[0].AffinityMask != 0 && P != null)
            {
                CPUID.AdjustAffinity(P.Id, CPUs[0].AffinityMask);
            }

            return(P);
        }
示例#6
0
        protected override Process BenchmarkStartProcess(string CommandLine)
        {
            Process BenchmarkHandle = base.BenchmarkStartProcess(CommandLine);

            if (CDevs[0].AffinityMask != 0 && BenchmarkHandle != null)
            {
                CPUID.AdjustAffinity(BenchmarkHandle.Id, CDevs[0].AffinityMask);
            }

            return(BenchmarkHandle);
        }
示例#7
0
 public Monitor(Hardware h)
 {
     hw = h;
     Program.log.add("Monitor: ");
     cpuid = new CPUID();
     if (!cpuid.ok)
     {
         Application.Exit();
     }
     Program.log.add_line("ok");
 }
示例#8
0
        protected override Process BenchmarkStartProcess(string CommandLine)
        {
            Process BenchmarkHandle = base.BenchmarkStartProcess(CommandLine);

            var AffinityMask = MiningSetup.MiningPairs[0].Device.AffinityMask;

            if (AffinityMask != 0 && BenchmarkHandle != null)
            {
                CPUID.AdjustAffinity(BenchmarkHandle.Id, AffinityMask);
            }

            return(BenchmarkHandle);
        }
示例#9
0
        protected override NiceHashProcess _Start()
        {
            NiceHashProcess P = base._Start();

            var AffinityMask = MiningSetup.MiningPairs[0].Device.AffinityMask;

            if (AffinityMask != 0 && P != null)
            {
                CPUID.AdjustAffinity(P.Id, AffinityMask);
            }

            return(P);
        }
示例#10
0
        /// <summary>
        /// HasExtensionSupport checks CPU extensions support, if type automatic just return false.
        /// </summary>
        /// <param name="type"></param>
        /// <returns>False if type Automatic otherwise True if supported</returns>
        private static bool HasExtensionSupport(CPUExtensionType type)
        {
            switch (type)
            {
            case CPUExtensionType.AVX2: return(CPUID.SupportsAVX2() == 1);

            case CPUExtensionType.AES: return(CPUID.SupportsAES() == 1);

            default:     // CPUExtensionType.Automatic
                break;
            }
            return(false);
        }
示例#11
0
        // CPU aff set from NHM
        /// <summary>
        /// The _Start
        /// </summary>
        /// <returns>The <see cref="HashKingsProcess"/></returns>
        protected override HashKingsProcess _Start()
        {
            HashKingsProcess P = base._Start();

            if (CPU_Setup.IsInit && P != null)
            {
                var AffinityMask = CPU_Setup.MiningPairs[0].Device.AffinityMask;
                if (AffinityMask != 0)
                {
                    CPUID.AdjustAffinity(P.Id, AffinityMask);
                }
            }

            return(P);
        }
示例#12
0
        public cpuminer(int id, int threads, ulong affinity)
            : base(DeviceType.CPU, "CPU" + id.ToString())
        {
            Threads      = threads;
            AffinityMask = affinity;

            bool isInitialized = InitializeMinerPaths();

            // if our CPU is supported add it to devices
            // TODO if Miner and ComputeDevice decoupling redo this this is going to be at detecting CPUs
            if (isInitialized)
            {
                CDevs.Add(new ComputeDevice(0, MinerDeviceName, CPUID.GetCPUName().Trim(), Threads, true));
            }
        }
示例#13
0
        private void QueryCPUs()
        {
            Helpers.ConsolePrint(TAG, "QueryCPUs START");
            // get all CPUs
            CPUs = CPUID.GetPhysicalProcessorCount();

            // get all cores (including virtual - HT can benefit mining)
            int ThreadsPerCPU = CPUID.GetVirtualCoresCount() / CPUs;

            if (!Helpers.InternalCheckIsWow64())
            {
                MessageBox.Show(International.GetText("Form_Main_msgbox_CPUMining64bitMsg"),
                                International.GetText("Warning_with_Exclamation"),
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);
                CPUs = 0;
            }

            if (ThreadsPerCPU * CPUs > 64)
            {
                MessageBox.Show(International.GetText("Form_Main_msgbox_CPUMining64CoresMsg"),
                                International.GetText("Warning_with_Exclamation"),
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);
                CPUs = 0;
            }

            // TODO important move this to settings
            int ThreadsPerCPUMask = ThreadsPerCPU;

            Globals.ThreadsPerCPU = ThreadsPerCPU;

            if (cpuminer.InitializeMinerPaths())
            {
                if (CPUs == 1)
                {
                    new ComputeDevice(0, "CPU0", CPUID.GetCPUName().Trim(), ThreadsPerCPU, (ulong)0, true);
                    //MinersManager.Instance.AddCpuMiner(new cpuminer(0, ThreadsPerCPU, 0), 0, CPUID.GetCPUName().Trim());
                }
                else
                {
                    for (int i = 0; i < CPUs; i++)
                    {
                        new ComputeDevice(0, "CPU" + i, CPUID.GetCPUName().Trim(), ThreadsPerCPU, CPUID.CreateAffinityMask(i, ThreadsPerCPUMask), true);
                    }
                }
            }

            Helpers.ConsolePrint(TAG, "QueryCPUs END");
        }
示例#14
0
        /// <summary>
        /// HasExtensionSupport checks CPU extensions support, if type automatic just return false.
        /// </summary>
        /// <param name="type"></param>
        /// <returns>False if type Automatic otherwise True if supported</returns>
        public static bool HasExtensionSupport(CPUExtensionType type)
        {
            switch (type)
            {
            case CPUExtensionType.AVX2_AES: return((CPUID.SupportsAVX2() == 1) && (CPUID.SupportsAES() == 1));

            case CPUExtensionType.AVX2: return(CPUID.SupportsAVX2() == 1);

            case CPUExtensionType.AVX_AES: return((CPUID.SupportsAVX() == 1) && (CPUID.SupportsAES() == 1));

            case CPUExtensionType.AVX: return(CPUID.SupportsAVX() == 1);

            case CPUExtensionType.AES: return(CPUID.SupportsAES() == 1);

            case CPUExtensionType.SSE2: return(CPUID.SupportsSSE2() == 1);

            default:     // CPUExtensionType.Automatic
                break;
            }
            return(false);
        }
示例#15
0
        private static CPUID[][] GetProcessorThreads()
        {
            List <CPUID> threads = new List <CPUID>();

            for (int i = 0; i < 64; i++)
            {
                try
                {
                    threads.Add(new CPUID(i));
                }
                catch (ArgumentOutOfRangeException) { }
            }

            SortedDictionary <uint, List <CPUID> > processors =
                new SortedDictionary <uint, List <CPUID> >();

            foreach (CPUID thread in threads)
            {
                List <CPUID> list;
                processors.TryGetValue(thread.ProcessorId, out list);
                if (list == null)
                {
                    list = new List <CPUID>();
                    processors.Add(thread.ProcessorId, list);
                }
                list.Add(thread);
            }

            CPUID[][] processorThreads = new CPUID[processors.Count][];
            int       index            = 0;

            foreach (List <CPUID> list in processors.Values)
            {
                processorThreads[index] = list.ToArray();
                index++;
            }
            return(processorThreads);
        }
示例#16
0
文件: AMDCPU.cs 项目: fkpwolf/tinyFan
 public AMDCPU(int processorIndex, CPUID[][] cpuid, ISettings settings)
     : base(processorIndex, cpuid, settings)
 {
 }