public static TempFilesHelper GetInstance() { if (instance == null) { instance = new TempFilesHelper(); } return(instance); }
public static TempFilesHelper GetInstance() { if (instance == null) { instance = new TempFilesHelper(); } return instance; }
private List <HLRunInfo> GenerateTasks(string filePath, int repetitions, int parallelism, bool printTmpPaths) { string fileName = Path.GetFileName(filePath); List <HLRunInfo> tasks = new List <HLRunInfo>(); var optimizer = Load <IOptimizer>(filePath); optimizer.Prepare(); optimizer.Runs.Clear(); if (optimizer == null) { throw new ArgumentException(String.Format("{0} does not contain an optimizer.", filePath)); } var listOfOptimizer = UnrollOptimizer(optimizer); TempFilesHelper tfh = TempFilesHelper.GetInstance(); int count = 0; for (int i = 0; i < repetitions; i++) { foreach (var opt in listOfOptimizer) { var clone = (IOptimizer)opt.Clone(); int coresRequired = 1; if (parallelism != 0) { var cloneEngineAlgo = clone as EngineAlgorithm; if (cloneEngineAlgo != null) { if (parallelism == 1 && !(cloneEngineAlgo.Engine is SequentialEngine.SequentialEngine)) { cloneEngineAlgo.Engine = new SequentialEngine.SequentialEngine(); } else { if (!(cloneEngineAlgo.Engine is ParallelEngine.ParallelEngine)) { cloneEngineAlgo.Engine = new ParallelEngine.ParallelEngine(); } coresRequired = parallelism > 0 ? Math.Max(parallelism, Environment.ProcessorCount) : Environment.ProcessorCount; (cloneEngineAlgo.Engine as ParallelEngine.ParallelEngine).DegreeOfParallelism = coresRequired; } } } else { coresRequired = clone as EngineAlgorithm != null && (clone as EngineAlgorithm).Engine as ParallelEngine.ParallelEngine != null ? ((clone as EngineAlgorithm).Engine as ParallelEngine.ParallelEngine).DegreeOfParallelism : 1; coresRequired = coresRequired > 0 ? coresRequired : Environment.ProcessorCount; } var algo = clone as Algorithm; if (algo != null) { var prob = algo.Problem as IParallelEvaluatorProblem; if (prob != null) { prob.DegreeOfParallelismParameter.Value.Value = coresRequired; } } string savePath = tfh.GetTempFileName(); if (printTmpPaths) { Helper.printToConsole(String.Format("Temporary save path: {0}", savePath), fileName); } tasks.Add(new HLRunInfo(++count, clone, filePath, coresRequired, savePath)); } } return(tasks); }