Esempio n. 1
0
        public virtual bool ReadCommand(out string cmd)
        {
            if (m_startupCommands != null)
            {
                string c = (string)m_startupCommands.Dequeue();
                if (m_startupCommands.Count == 0)
                {
                    m_startupCommands = null;
                }
                cmd = c;
                WriteOutput(MDbgOutputConstants.StdOutput, c + "\r\n");
                return(true);
            }

retry:
            m_isConsoleBreakHandlerExecuted = false;
            WriteMdbgPrompt(true);
            //cmd = Console.ReadLine();
            cmd = wr.Read();
            if (cmd == null)
            {
                Thread.Sleep(100);

                if (m_isConsoleBreakHandlerExecuted)
                {
                    // means we have not hit an EOF.
                    goto retry;
                }
            }
            //return true;
            return(cmd == null ? false : true);
        }
Esempio n. 2
0
        private static void MultiThreaded(string[] args)
        {
            MPI.Environment.Run(ref args, communicator =>
            {
                var sorter   = new MPIQuickSort(communicator);
                var isMaster = communicator.Rank == 0;

                if (isMaster)
                {
                    var inputFile  = args[0];
                    var outputFile = args[1];

                    var array = ReaderWriter.Read(inputFile);

                    IList <int> result = null;

                    using (var performanceCounter = new PerformanceCounter($"Execution time: "))
                    {
                        result = sorter.ParallelSort(array, 0, array.Count - 1);
                    }

                    ReaderWriter.Write(outputFile, result);

                    //Console.WriteLine($"Verify result: {Verify(result, inputFile)}");
                }
                else
                {
                    sorter.WorkerLoop();
                }
            });
        }
Esempio n. 3
0
 void ISynchronizer.ReadDataFromStorage()
 {
     readerWriter.Read(loadedData =>
     {
         if (loadedData == null)
         {
             return;
         }
         else
         {
             if (cashData == null)
             {
                 cashData       = loadedData;
                 T combinedData = CombineData(model.GetData(), loadedData);
                 model.SetData(combinedData);
                 return;
             }
             else
             {
                 if (cashData.Equals(loadedData))
                 {
                     return;
                 }
                 else
                 {
                     ChooseData(loadedData, choosedData => model.SetData(choosedData));
                     return;
                 }
             }
         }
     });
 }
Esempio n. 4
0
        private static void SingleThreaded(string[] args)
        {
            var inputFile  = args[0];
            var outputFile = args[1];

            var array = ReaderWriter.Read(inputFile);

            QuickSort.Sort(array, 0, array.Count - 1);

            ReaderWriter.Write(outputFile, array);
        }
Esempio n. 5
0
        private static bool Verify(IList <int> result, string inputFile)
        {
            QuickSort.PivotType = PivotType.Middle;

            var array = ReaderWriter.Read(inputFile);

            QuickSort.Sort(array, 0, array.Count - 1);

            QuickSort.PivotType = PivotType.Middle;

            var flag = true;

            for (int index = 0; index < result.Count; index++)
            {
                //Console.WriteLine($"Index {index}: {result[index]} ({array[index]})");

                if (result[index] != array[index])
                {
                    flag = false;
                }
            }

            return(flag);
        }
Esempio n. 6
0
        private static void MultiThreadedVol2(string[] args)
        {
            MPI.Environment.Run(ref args, communicator =>
            {
                //Initialize
                var inputFile  = args[0];
                var outputFile = args[1];

                var sorter    = new QSorter(communicator);
                var isManager = communicator.Rank == 0;

                int[] result = null;

                //Send array parts to workers
                if (isManager)
                {
                    var array   = ReaderWriter.Read(inputFile);
                    var qsArray = new QSArray(array);

                    sorter.InitializeWithData(qsArray);
                }
                else
                {
                    sorter.InitializeWithData(null);
                }

                //Parallel QSort
                using (var performanceCounter = new PerformanceCounter($"Execution time [{communicator.Rank}]: "))
                {
                    while (true)
                    {
                        if (sorter.LastInGroup)
                        {
                            sorter.Sort();
                            break;
                        }

                        sorter.PivotBroadcast();
                        sorter.PartitionAndPartsExchange();
                        sorter.GroupHalfToSubGroup();
                    }

                    sorter.SendWorkResult();

                    //Collect all parts together
                    if (isManager)
                    {
                        result = sorter.MergeDataFromWorkers();
                    }
                }

                //Write to output file
                if (isManager)
                {
                    var list = result.ToList();
                    ReaderWriter.Write(outputFile, list);

                    //Console.WriteLine($"Verified: {Verify(list, inputFile)}");
                }
            });
        }