Ejemplo n.º 1
0
        private void readPair_OMK_OMVs()
        {
            Console.WriteLine(this.Rank + ": REDUCE 1");

            IIteratorInstance <IKVPair <TKey, IIterator <TValue> > > input_instance = (IIteratorInstance <IKVPair <TKey, IIterator <TValue> > >)Collect_pairs.Client;
            IIteratorInstance <IKVPair <OKey, OValue> > output_instance             = (IIteratorInstance <IKVPair <OKey, OValue> >)Output.Instance;

            Feed_pairs.Server = output_instance;

            IActionFuture sync_perform;

            // TODO: Dividir em chunks a saa de pares (OKey,OValue)

            Console.WriteLine(this.Rank + ": REDUCER 2");

//			object gusty_lock = new object ();

            bool end_computation = false;

            while (!end_computation)                // new iteration
            {
                IDictionary <object, object> cont_dict = new Dictionary <object, object> ();

                Console.WriteLine(this.Rank + ": REDUCER LOOP");

                end_computation = true;

                bool end_iteration = false;
                while (!end_iteration)                    // take next chunk ...
                {
                    Console.WriteLine(this.Rank + ": REDUCER ITERATE 1");

                    Task_gusty.invoke(ITaskPortAdvance.READ_CHUNK);
                    Task_gusty.invoke(ITaskPortAdvance.PERFORM, out sync_perform);

                    Console.WriteLine(this.Rank + ": REDUCER ITERATE 2");

                    IKVPairInstance <TKey, IIterator <TValue> > kvpair = null;
                    object kvpair_object;

                    if (!input_instance.has_next())
                    {
                        end_iteration = true;
                    }
                    else
                    {
                        end_computation = false;
                    }

                    int count = 0;
                    while (input_instance.fetch_next(out kvpair_object))
                    {
                        Console.WriteLine(this.Rank + ": REDUCER ITERATE INNER LOOP 3 count=" + count);

                        kvpair = (IKVPairInstance <TKey, IIterator <TValue> >)kvpair_object;

                        object acc_value;
                        if (!cont_dict.TryGetValue(kvpair.Key, out acc_value))
                        {
                            cont_dict[kvpair.Key] = new object();
                        }
                        else
                        {
                            ((IDataInstance)Continue_value.Instance).ObjValue = acc_value;
                        }

                        Input_values.Instance = kvpair;
                        Gusty_function.go();
                        cont_dict [kvpair.Key] = ((IDataInstance)((IKVPairInstance <OKey, OValue>)Output_value.Instance).Value).ObjValue;

                        count++;
                    }

                    Console.WriteLine(this.Rank + ": REDUCER ITERATE 4 count=" + count);

                    sync_perform.wait();

                    Console.WriteLine(this.Rank + ": REDUCER ITERATE 5");
                }

                Console.WriteLine(this.Rank + ": REDUCER ITERATE END ITERATION");

                int chunk_counter = 1;

                IActionFuture gusty_chunk_ready;
                Task_gusty.invoke(ITaskPortAdvance.CHUNK_READY, out gusty_chunk_ready);                   //***

                foreach (KeyValuePair <object, object> output_pair in cont_dict)
                {
                    IKVPairInstance <OKey, OValue> new_pair = (IKVPairInstance <OKey, OValue>)Output_value.newInstance();
                    new_pair.Key   = output_pair.Key;
                    new_pair.Value = output_pair.Value;
                    output_instance.put(new_pair);
                }

                output_instance.finish();

                gusty_chunk_ready.wait();

                Console.WriteLine(this.Rank + ": REDUCER ITERATE FINISH");
            }

            Console.WriteLine(this.Rank + ": REDUCER FINISH ... ");
        }
Ejemplo n.º 2
0
        public override void main()
        {
            IKVPairInstance <IString, IIterator <IInteger> > input_values_instance = (IKVPairInstance <IString, IIterator <IInteger> >)Input_values.Instance;
            IIteratorInstance <IInteger> counts_iterator = (IIteratorInstance <IInteger>)input_values_instance.Value;

            int    total_count = 0;
            object integer_object;

            while (counts_iterator.fetch_next(out integer_object))
            {
                total_count += ((IIntegerInstance)integer_object).Value;
            }

            IKVPairInstance <IString, IInteger> output_value_instance = (IKVPairInstance <IString, IInteger>)Output_value.newInstance();

            ((IStringInstance)output_value_instance.Key).Value    = ((IStringInstance)input_values_instance.Key).Value;
            ((IIntegerInstance)output_value_instance.Value).Value = total_count;
//			Trace.WriteLine ("TALLIER string=" + ((IStringInstance)output_value_instance.Key).Value + "; count=" + ((IIntegerInstance)output_value_instance.Value).Value);
        }
Ejemplo n.º 3
0
        public void apply()
        {
            string buffer = "";

            foreach (KeyValuePair <int, double> kv in Di)
            {
                buffer = buffer + kv.Key + " d " + kv.Value + System.Environment.NewLine;
            }

            IKVPairInstance <IString, IString> orv = (IKVPairInstance <IString, IString>)Output_value.newInstance();

            ((IStringInstance)orv.Key).Value   = "1";
            ((IStringInstance)orv.Value).Value = buffer;
        }
Ejemplo n.º 4
0
        public override void main()
        {
            IKVPairInstance <IString, IIterator <IDouble> > input = (IKVPairInstance <IString, IIterator <IDouble> >)Input_values.Instance;
            IIteratorInstance <IDouble> doubles = (IIteratorInstance <IDouble>)input.Value;

            double soma = 0.0;
            object o;

            while (doubles.fetch_next(out o))
            {
                soma += ((IDoubleInstance)o).Value;
            }

            IKVPairInstance <IString, IDouble> kvpair = (IKVPairInstance <IString, IDouble>)Output_value.newInstance();

            ((IStringInstance)kvpair.Key).Value   = ((IStringInstance)input.Key).Value;
            ((IDoubleInstance)kvpair.Value).Value = soma;

            //using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"/home/cenez/workspace/java/hash-programming-environment-read-only/HPE_BackEnd/logReduce", true)){
            //	file.WriteLine("key="+((IStringInstance)kvpair.Key).Value+" : value="+((IDoubleInstance)kvpair.Value).Value);
            //}
        }
        public override void main()
        {
            double di   = int.MaxValue;
            double dmin = int.MaxValue;
            int    done = 1;

//			var t = Tuple.Create<string,int>("dd",333);

            IKVPairInstance <IString, IIterator <IString> > input = (IKVPairInstance <IString, IIterator <IString> >)Input_values.Instance;
            IStringInstance             k = (IStringInstance)input.Key;
            IIteratorInstance <IString> v = (IIteratorInstance <IString>)input.Value;

            int k_int = int.Parse(k.Value);

            if (!neighbours.ContainsKey(k_int))
            {
                neighbours [k_int] = new Dictionary <int, double> ();
            }

            string buffer = "";
            object o;

            while (v.fetch_next(out o))
            {
                IStringInstance item = (IStringInstance)o;

                string[] values = item.Value.Split(' ');
                switch (values[0][0])
                {
                case 'c':
                    double tmp = double.Parse(values [1]);
                    dmin = min(dmin, tmp);
                    break;

                case 'd':
                    di = double.Parse(values [1]);
                    break;

                default:
                    //neighbours [k_int] [int.Parse (values [0])] = double.Parse (values [1]);
                    IDictionary <int, double> output_neibours = neighbours[k_int];
                    int    n = int.Parse(values [0]);
                    double d = 0.0;
                    if (!output_neibours.TryGetValue(n, out d))
                    {
                        output_neibours[n] = double.Parse(values [1]);
                    }
                    else
                    if (double.Parse(values [1]) < d)
                    {
                        output_neibours[n] = double.Parse(values [1]);
                    }
                    break;
                }
            }

            dmin = min(dmin, di);
            if (dmin != di)
            {
                foreach (KeyValuePair <int, double> kv in neighbours[k_int])
                {
                    buffer = buffer + kv.Key + " c " + (kv.Value + dmin) + System.Environment.NewLine;
                }
                done = 0;
            }
            buffer = buffer + k.Value + " d " + dmin + " " + System.Environment.NewLine;

            IKVPairInstance <IString, IString> orv = (IKVPairInstance <IString, IString>)Output_value.newInstance();

            ((IStringInstance)orv.Key).Value   = done.ToString();
            ((IStringInstance)orv.Value).Value = buffer;
        }
        public override void main()
        {
            int di   = int.MaxValue;
            int dmin = int.MaxValue;
            int done = 1;

            Trace.WriteLine(Rank + ": START REDUCE FUNCTION");

            IKVPairInstance <IInteger, IIterator <IPathInfo> > input_instance = (IKVPairInstance <IInteger, IIterator <IPathInfo> >)Input_values.Instance;
            IIntegerInstance k = (IIntegerInstance)input_instance.Key;
            IIteratorInstance <IPathInfo> v = (IIteratorInstance <IPathInfo>)input_instance.Value;

            int k_int = k.Value;

            if (!neighbours.ContainsKey(k_int))
            {
                neighbours [k_int] = new Dictionary <int, int> ();
            }

            object o;

            while (v.fetch_next(out o))
            {
                IPathInfoInstance item = (IPathInfoInstance)o;
                Info item_info         = (Info)item.Value;

                Trace.WriteLine(Rank + ": REDUCE FUNCTION LOOP " + item_info);

                switch (item_info.info_type)
                {
                case Info.PATH_INFO_TYPE_DISTANCE_TRIAL:
                    DistanceInfo distance_item_info_1 = (DistanceInfo)item_info;
                    int          tmp = distance_item_info_1.distance;
                    dmin = (int)min(dmin, tmp);
                    break;

                case Info.PATH_INFO_TYPE_DISTANCE_PARTIAL:
                    DistanceInfo distance_item_info_2 = (DistanceInfo)item_info;
                    di = distance_item_info_2.distance;
                    break;

                case Info.PATH_INFO_TYPE_EDGE:
                    EdgeInfo edge_item_info = (EdgeInfo)item_info;
                    IDictionary <int, int> output_neibours = neighbours[k_int];
                    int n = edge_item_info.vertex_other;
                    int d = 0;
                    if (!output_neibours.TryGetValue(n, out d))
                    {
                        output_neibours[n] = edge_item_info.weight;
                    }
                    else
                    if (edge_item_info.weight < d)
                    {
                        output_neibours[n] = edge_item_info.weight;
                    }
                    break;
                }
            }

            Trace.WriteLine(Rank + ": REDUCE FUNCTION AFTER LOOP #1 ");

            IKVPairInstance <IInteger, IIterator <IPathInfo> > orv = (IKVPairInstance <IInteger, IIterator <IPathInfo> >)Output_value.newInstance();
            IIteratorInstance <IPathInfo> buffer = (IIteratorInstance <IPathInfo>)orv.Value;

            Trace.WriteLine(Rank + ": REDUCE FUNCTION OUT LOOP #2 ");

            //IPathInfo path_info = buffer.createItem();

            dmin = (int)min(dmin, di);
            if (dmin != di)
            {
                foreach (KeyValuePair <int, int> kv in neighbours[k_int])
                {
                    //IPathInfoInstance path_info_instance = (IPathInfoInstance) path_info.newInstance ();
                    IPathInfoInstance path_info_instance = (IPathInfoInstance)buffer.createItem();
                    DistanceInfo      distance_info      = new DistanceInfo();
                    distance_info.info_type  = Info.PATH_INFO_TYPE_DISTANCE_TRIAL;
                    distance_info.vertex     = kv.Key;
                    distance_info.distance   = kv.Value + dmin;
                    path_info_instance.Value = distance_info;
                    buffer.put(path_info_instance);
                    Trace.WriteLine(Rank + ": REDUCE FUNCTION OTHER LOOP " + distance_info);
                }
                done = 0;
            }

            ((IIntegerInstance)orv.Key).Value = done;


            IPathInfoInstance path_info_instance_2 = (IPathInfoInstance)buffer.createItem();
            DistanceInfo      distance_info_2      = new DistanceInfo();

            distance_info_2.info_type  = Info.PATH_INFO_TYPE_DISTANCE_PARTIAL;
            distance_info_2.vertex     = k.Value;
            distance_info_2.distance   = dmin;
            path_info_instance_2.Value = distance_info_2;
            buffer.put(path_info_instance_2);

            Trace.WriteLine(Rank + ": REDUCE FUNCTION OTHER LOOP OUT " + distance_info_2);

            buffer.finish();

            Trace.WriteLine(Rank + ": FINISH REDUCE FUNCTION");
        }
        public override void main()
        {
            count = 0;
            IKVPairInstance <IString, IIterator <ICliqueNode> > input = (IKVPairInstance <IString, IIterator <ICliqueNode> >)Input_values.Instance;
            IStringInstance pivot = (IStringInstance)input.Key;
            IIteratorInstance <ICliqueNode> input_value = (IIteratorInstance <ICliqueNode>)input.Value;

            bigCliques = new List <IList <int> > ();
            bigger     = 0;

            HashSet <int> upper = new HashSet <int>();
            HashSet <int> lower = new HashSet <int>();

            IDictionary <int, IList <int> > dicValues = splitting_In_Left_Pivot_Right(input_value, pivot.Value, upper, lower);

            IList <int> R = new List <int>();

            R.Add(int.Parse(pivot.Value));

            bronKerboschAlgorithm(1, dicValues, upper, R, lower);

            //if (count > 0) {
            IKVPairInstance <IString, ICliqueNode> kvpair = (IKVPairInstance <IString, ICliqueNode>)Output_value.newInstance();

            ((IStringInstance)kvpair.Key).Value            = pivot.Value;
            ((ICliqueNodeInstance)kvpair.Value).IdInstance = count;                     //bigCliques [0].Count;
            //((ICliqueNodeInstance)kvpair.Value).NeighborsInstance = bigCliques [0];
            //} else {
            //	IKVPairInstance<IString,ICliqueNode> kvpair = (IKVPairInstance<IString,ICliqueNode>)Output_value.newInstance ();
            //	((IStringInstance)kvpair.Key).Value = pivot.Value;
            //	((ICliqueNodeInstance)kvpair.Value).IdInstance = 0;
            //}
        }