Esempio n. 1
0
        private void graph_creator()
        {
            IIteratorInstance <IKVPair <IInteger, IIterator <GIF> > > input_instance_gif = (IIteratorInstance <IKVPair <IInteger, IIterator <GIF> > >)Collect_graph.Client;
            IIteratorInstance <IKVPair <IInteger, GIF> > output_instance_gif             = (IIteratorInstance <IKVPair <IInteger, GIF> >)Output_gif.Instance;

            Feed_graph.Server = output_instance_gif;

            IActionFuture sync_perform;

            bool end_iteration = false;

            while (!end_iteration)                  // take next chunk ...
            {
                Task_gusty.invoke(ITaskPortAdvance.READ_CHUNK);
                Task_gusty.invoke(ITaskPortAdvance.PERFORM, out sync_perform);

                IKVPairInstance <IInteger, IIterator <GIF> > kvpair = null;
                object kvpair_object;
                object o;

                if (!input_instance_gif.has_next())
                {
                    end_iteration = true;
                }

                while (input_instance_gif.fetch_next(out kvpair_object))
                {
                    kvpair = (IKVPairInstance <IInteger, IIterator <GIF> >)kvpair_object;
                    Graph_values.Instance = kvpair;
                    Gusty_function.graph_creator();
                }
                sync_perform.wait();
            }
            //IActionFuture gusty_chunk_ready;
            //Task_gusty.invoke (ITaskPortAdvance.CHUNK_READY, out gusty_chunk_ready);  //***
            output_instance_gif.finish();
            //gusty_chunk_ready.wait ();
        }
Esempio n. 2
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 ... ");
        }