Ejemplo n.º 1
0
        private void performAction(long cellId)
        {
            using (var rootCell = Global.LocalStorage.UseSSSPCell(cellId))
            {
                //Console.WriteLine("PerformAction: " + cellId);
                //update rankValue && storedRankValue

                //rootCell.rankValue = rootCell.storedRankValue - rootCell.oldStoredRankValue;
                //rootCell.oldStoredRankValue = rootCell.storedRankValue;

                //long rankValueP = (rootCell.rankValue - rootCell.oldRankValue) / rootCell.neighbors.Count;
                double rankValueP = (rootCell.storedRankValue - rootCell.rankValue) / rootCell.neighbors.Count;

                MessageSorter sorter = new MessageSorter(rootCell.neighbors);
                for (int i = 0; i < Global.SlaveCount; i++)
                {
                    //Console.WriteLine(3);
                    RankUpdatingMessageWriter msg = new RankUpdatingMessageWriter(rootCell.CellID.Value, rankValueP, sorter.GetCellRecipientList(i));
                    //Console.WriteLine(4);
                    Global.CloudStorage.RankUpdatingToSlave(i, msg);
                    //Console.WriteLine(5);
                }

                //update
                //Console.WriteLine(6);
                //rootCell.oldRankValue = rootCell.rankValue;
                rootCell.rankValue = rootCell.storedRankValue;
            }
        }
Ejemplo n.º 2
0
        private void initialSend(SSSPCell rootCell)
        {
            //Console.WriteLine(value);
            addCount();

            double v = 1 / rootCell.outNeighbors.Count;

            MessageSorter sorter = new MessageSorter(rootCell.outNeighbors);

            for (int i = 0; i < Global.SlaveCount; i++)
            {
                RankUpdatingMessageWriter msg =
                    new RankUpdatingMessageWriter(rootCell.CellID, v, sorter.GetCellRecipientList(i));
                Global.CloudStorage.RankUpdatingToSlave(i, msg);
            }
        }
Ejemplo n.º 3
0
        private void initialPropagate(SSSPCell cell, bool isActive)
        {
            //clear
            for (int i = 0; i < cell.inNeighborsReceivedStatus.Count; i++)
            {
                cell.inNeighborsReceivedStatus[i] = false;
            }
            //cell.receivedNeighborCount = 0;

            //send-out
            double v = 1.0 / cell.outNeighbors.Count;

            MessageSorter sorter = new MessageSorter(cell.outNeighbors);

            for (int i = 0; i < Global.SlaveCount; i++)
            {
                //Console.WriteLine(sorter.GetCellRecipientList(i).Count);
                RankUpdatingMessageWriter msg = new RankUpdatingMessageWriter(cell.CellID, isActive, v, sorter.GetCellRecipientList(i));
                Global.CloudStorage.RankUpdatingToSlave(i, msg);
            }
        }
Ejemplo n.º 4
0
        private void propagate(SSSPCell cell, bool isActive)
        {
            //clear
            for (int i = 0; i < cell.inNeighborsReceivedStatus.Count; i++)
            {
                cell.inNeighborsReceivedStatus[i] = false;
            }
            //cell.receivedNeighborCount = 0;

            //send-out
            double v = cell.sum / cell.outNeighbors.Count;

            MessageSorter sorter = new MessageSorter(cell.outNeighbors);
            for (int i = 0; i < Global.SlaveCount; i++)
            {
                //Console.WriteLine(sorter.GetCellRecipientList(i).Count);
                RankUpdatingMessageWriter msg = new RankUpdatingMessageWriter(cell.CellID, isActive, v, sorter.GetCellRecipientList(i));
                Global.CloudStorage.RankUpdatingToSlave(i, msg);
            }
        }
Ejemplo n.º 5
0
        private void performActionOne(long cellId)
        {
            using (var rootCell = Global.LocalStorage.UseSSSPCell(cellId))
            {

                double rankValueP = rootCell.rankValue / rootCell.neighbors.Count;

                MessageSorter sorter = new MessageSorter(rootCell.neighbors);
                for (int i = 0; i < Global.SlaveCount; i++)
                {
                    //Console.WriteLine(3);
                    RankUpdatingMessageWriter msg = new RankUpdatingMessageWriter(rootCell.CellID.Value, rankValueP, sorter.GetCellRecipientList(i));
                    //Console.WriteLine(4);
                    Global.CloudStorage.RankUpdatingToSlave(i, msg);
                    //Console.WriteLine(5);
                }

                //update
                //Console.WriteLine(6);
                //rootCell.oldRankValue = rootCell.rankValue;
            }
        }
Ejemplo n.º 6
0
        private void send(SSSPCell rootCell)
        {
            //Console.WriteLine(value);
            addCount();

            double v = rootCell.sum / rootCell.outNeighbors.Count;

            MessageSorter sorter = new MessageSorter(rootCell.outNeighbors);
            for (int i = 0; i < Global.SlaveCount; i++)
            {
                RankUpdatingMessageWriter msg =
                    new RankUpdatingMessageWriter(rootCell.CellID, v, sorter.GetCellRecipientList(i));
                Global.CloudStorage.RankUpdatingToSlave(i, msg);
            }
        }
Ejemplo n.º 7
0
        private void send(long fromCellId, double value)
        {
            //Console.WriteLine(value);
            addCount();

            double v = 0;
            using (var rootCell = Global.LocalStorage.UseSSSPCell(fromCellId))
            {
                try
                {
                    v = value / rootCell.outNeighbors.Count;

                    MessageSorter sorter = new MessageSorter(rootCell.outNeighbors);
                    for (int i = 0; i < Global.SlaveCount; i++)
                    {
                        RankUpdatingMessageWriter msg = new RankUpdatingMessageWriter(rootCell.CellID.Value, v, sorter.GetCellRecipientList(i));
                        Global.CloudStorage.RankUpdatingToSlave(i, msg);
                    }
                }
                catch (Exception e)
                {
                    //Console.Error.WriteLine(e);
                    Console.WriteLine(fromCellId);
                }
            }
        }
Ejemplo n.º 8
0
        private void performAction(long cellId)
        {
            //Console.WriteLine(0);

            using (var rootCell = Global.LocalStorage.UseSSSPCell(cellId))
            {
                //activated cell should satisfy storedRankValue > rankValue
                rootCell.rankValue = rootCell.storedRankValue;

                /*
                if (rootCell.status == false) return;
                if (rootCell.neighbors.Count == 0)
                {
                    rootCell.status = false;
                    return;
                }
                */

                //Console.WriteLine(1);

                //compute current rankValueP
                long rankValueP = rootCell.rankValue / rootCell.neighbors.Count;

                //if (rootCell.oldRankValueP < rankValueP)
                //{

                //send the rank difference
                MessageSorter sorter = new MessageSorter(rootCell.neighbors);
                //Console.WriteLine(2);
                for (int i = 0; i < Global.SlaveCount; i++)
                {
                    //Console.WriteLine(3);
                    RankUpdatingMessageWriter msg = new RankUpdatingMessageWriter(rootCell.CellID.Value, rankValueP - rootCell.oldRankValueP, sorter.GetCellRecipientList(i));
                    //Console.WriteLine(4);
                    Global.CloudStorage.RankUpdatingToSlave(i, msg);
                    //Console.WriteLine(5);
                }

                //update
                //Console.WriteLine(6);
                rootCell.oldRankValueP = rankValueP;

                //}
            }
        }