123456789101112131415161718192021222324252627282930313233343536373839404142 |
- using System;
- namespace WingAIDiagnosisService.Carotid.Utilities
- {
- public enum PerformanceAbility
- {
- Low = 0,
- Medium = 1,
- High = 2,
- Maximum = 3
- }
- class CNTKUtility
- {
- public static void SetMaxNumCPUThreads(PerformanceAbility performanceAbility)
- {
- int numLogicalProcessor = Environment.ProcessorCount;
- int numAvailableProcessor = 1;
- int numWorker = 1;
- switch (performanceAbility)
- {
- case PerformanceAbility.Maximum:
- numAvailableProcessor = Math.Max(Convert.ToInt32(Math.Round(numLogicalProcessor * 0.8)), 1);
- numWorker = Math.Min(Math.Max(Convert.ToInt32(Math.Round(numAvailableProcessor * 0.5)), 1), 8);
- break;
- case PerformanceAbility.High:
- numAvailableProcessor = Math.Max(Convert.ToInt32(Math.Round(numLogicalProcessor * 0.6)), 1);
- numWorker = Math.Min(Math.Max(Convert.ToInt32(Math.Round(numAvailableProcessor * 0.5)), 1), 4);
- break;
- case PerformanceAbility.Medium:
- numAvailableProcessor = Math.Max(Convert.ToInt32(Math.Round(numLogicalProcessor * 0.4)), 1);
- numWorker = Math.Min(Math.Max(Convert.ToInt32(Math.Round(numAvailableProcessor * 0.5)), 1), 2);
- break;
- default:
- numAvailableProcessor = 1;
- break;
- }
- //CNTK.Utils.SetMaxNumCPUThreads(numWorker);
- }
- }
- }
|