示例#1
0
        public async Task Resume()
        {
            await Parallelizer.Resume();

            AnsiConsole.MarkupLine($"[greenyellow]resume at {Parallelizer.StartTime}[/]");

            _ = StartUpdatingRecordAsync();
        }
        public List <ImageRepresentation> RecognizeImage(List <ImageRepresentation> Images)
        {
            Model MnistModel = new Model(ModelPath: Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + "\\Backend\\RecognitionModel\\mnist-8.onnx");

            Parallelizer <ImageRepresentation, ImageRepresentation> ModelParallelizer = new Parallelizer <ImageRepresentation, ImageRepresentation>(MnistModel, UseServer: true);
            List <ImageRepresentation> result = ModelParallelizer.Run(Images);

            return(result);
        }
示例#3
0
 public override void RunParty()
 {
     isOptimized = Config.isOptimized;
     if (isOptimized)
     {
         Optimizer optimizer = new Parallelizer();
         optimizer.Optimize(program);
         int icNum = program.icList.Count;
         while (icNum > program.evaluatedIC.Count)
         {
             //for (int i = program.icList.Count - 1; i >= 0; --i)
             //{
             //    if (program.IsIndependent(program.icList[i]))
             //    {
             //        //code.hasBeenOrIsBeeningEvaluated = true;
             //        ThreadPool.QueueUserWorkItem(Evaluate, program.icList[i]);
             //        program.icList.RemoveAt(i);
             //    }
             //}
             foreach (var code in program.icList.GetCodes())
             {
                 if (code.hasBeenOrIsBeingEvaluated)
                 {
                     continue;
                 }
                 else
                 {
                     if (program.IsIndependent(code))
                     {
                         code.hasBeenOrIsBeingEvaluated = true;
                         ThreadPool.QueueUserWorkItem(Evaluate, code);
                         //Thread thread = new Thread(() => Evaluate(code));
                         //thread.Name = "KH_" + code.index;
                         //thread.Start();
                     }
                 }
             }
         }
     }
     else
     {
         foreach (var code in program.icList.GetCodes())
         {
             //if (code is ICAssignment && ((ICAssignment)code).op != OperationType.Return)
             //{
             //    System.Diagnostics.Debug.WriteLine("KH: " + code);
             //}
             Evaluate(code);
             while (!program.evaluatedIC.ContainsKey(code))
             {
                 Thread.Sleep(1);
             }
             System.Diagnostics.Debug.WriteLineIf(program.vTable.ContainsKey(Config.watchVar), "k: " + program.vTable[Config.watchVar]);
         }
     }
 }
示例#4
0
        public async Task DownDegreeOfParallelism()
        {
            if (Stats.DegreeOfParallelism <= 1)
            {
                return;
            }

            Stats.DegreeOfParallelism--;

            await Parallelizer.ChangeDegreeOfParallelism(Stats.DegreeOfParallelism);
        }
示例#5
0
        public async Task UpDegreeOfParallelism()
        {
            if (Stats.DegreeOfParallelism >= Parallelizer.MaxDegreeOfParallelism)
            {
                return;
            }

            Stats.DegreeOfParallelism++;

            await Parallelizer.ChangeDegreeOfParallelism(Stats.DegreeOfParallelism);
        }
        private void DeleteReplicas(object filterEntity, PropertyInfo[] entityProps)
        {
            ParallelParam parallelParam = new ParallelParam()
            {
                Param1 = filterEntity,
                Param2 = PersistenceAction.Delete
            };

            var replicationParallelDelegate = new ParameterizedThreadStart(PersistReplicasAsync);

            Parallelizer.StartNewProcess(replicationParallelDelegate, parallelParam);
        }
示例#7
0
        public async Task StartAsync()
        {
            await Parallelizer.Start();

            AnsiConsole.MarkupLine($"started at {Parallelizer.StartTime}");

            _ = StartUpdatingRecordAsync();

            await Parallelizer.WaitCompletion();

            AnsiConsole.MarkupLine($"[red3]aborted at {Parallelizer.EndTime}[/]");
        }
        private void EditReplicas(object entity, object filterEntity, PropertyInfo[] entityProps, bool persistComposition)
        {
            ParallelParam parallelParam = new ParallelParam()
            {
                Param1 = entity,
                Param2 = PersistenceAction.Edit,
                Param3 = persistComposition,
                Param4 = filterEntity
            };

            var replicationParallelDelegate = new ParameterizedThreadStart(PersistReplicasAsync);

            Parallelizer.StartNewProcess(replicationParallelDelegate, parallelParam);
        }
示例#9
0
        static int Main(string[] args)
        {
            Model MnistModel = new Model();

            Parallelizer <ImageRepresentation, ImageRepresentation> ModelParallelizer = new Parallelizer <ImageRepresentation, ImageRepresentation>(MnistModel);

            ModelParallelizer.OutputEvent += ConsoleOutput;

            string[] Files = null;
            try
            {
                Files = Directory.GetFiles(args.FirstOrDefault() ?? "images", "*.*").Where(s => s.EndsWith(".bmp") || s.EndsWith(".jpg") ||
                                                                                           s.EndsWith(".png") || s.EndsWith(".jpeg")).ToArray();

                // 0 images found after LINQ filtering
                if (Files == null)
                {
                    throw new ArgumentNullException("Files == NULL");
                }
                if (Files.Length == 0)
                {
                    throw new Exception("There is no images in the directory");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Wrong input" + ex.Message);
            }

            List <ImageRepresentation> Images = new List <ImageRepresentation>();

            foreach (string FilePath in Files)
            {
                byte[] ByteImage = File.ReadAllBytes(FilePath);
                Images.Add(new ImageRepresentation {
                    ImageName = FilePath, Base64Image = Convert.ToBase64String(ByteImage)
                });
            }

            ModelParallelizer.Run(Images);

            return(0);
        }
        private void CreateReplicas(object entity, PropertyInfo[] entityProps, int lastInsertedId, bool persistComposition)
        {
            var entityColumnKey = EntityReflector.GetKeyColumn(entityProps);

            if (entityColumnKey != null)
            {
                entityColumnKey.SetValue(entity, lastInsertedId, null);
            }

            ParallelParam parallelParam = new ParallelParam()
            {
                Param1 = entity,
                Param2 = PersistenceAction.Create,
                Param3 = persistComposition
            };

            var replicationParallelDelegate = new ParameterizedThreadStart(PersistReplicasAsync);

            Parallelizer.StartNewProcess(replicationParallelDelegate, parallelParam);
        }
示例#11
0
 public async Task Abort() => await Parallelizer.Abort();
示例#12
0
 public async Task Stop() => await Parallelizer.Stop();
示例#13
0
        public async Task Pause()
        {
            await Parallelizer.Pause();

            AnsiConsole.MarkupLine($"[darkorange]pause at {Parallelizer.StartTime}[/]");
        }
示例#14
0
 public Checker(Parallelizer <BotInput, bool> parallelizer, CheckerStats checkerStats, Record record)
 {
     Parallelizer = parallelizer;
     Stats        = checkerStats;
     _record      = record;
 }