Beispiel #1
0
        public ISelect <_, TTo> Get <TTo>(IReduce <T, TTo> parameter)
        {
            var content = new Content <T>(_partition.Get(parameter is ILimitAware limit ? limit.Get() : 2)).Returned();
            var result  = new Exit <_, T, T, TTo>(_origin, content, parameter);

            return(result);
        }
Beispiel #2
0
 public bool Equals(IReduce <T> other)
 {
     if (other == null)
     {
         return(false);
     }
     return(other.Name == Name);
 }
Beispiel #3
0
        public void ReduceWithNoStartIterates()
        {
            IFn     fn  = DummyFn.CreateForReduce();
            IReduce r   = (IReduce)_createFn(2L, 5L);
            object  ret = r.reduce(fn);

            Expect(ret, EqualTo(9));
        }
Beispiel #4
0
        public ISelect <_, TTo> Get <TTo>(IReduce <TOut, TTo> parameter)
        {
            var content = _container.Get(Leases <TOut> .Default)(parameter is ILimitAware limit ? limit.Get() : 2)
                          .Returned();
            var result = new Exit <_, TIn, TOut, TTo>(_origin, content, parameter);

            return(result);
        }
Beispiel #5
0
        public void ReduceWithNoStartIterates()
        {
            IFn     fn  = DummyFn.CreateForReduce();
            IReduce r   = (IReduce)_createFn(2L, 5L);
            object  ret = r.reduce(fn);

            Expect(ret).To.Be.An.Instance.Of <long>();
            Expect((long)ret).To.Equal(9);
        }
        public void RSeqReduceWithStartIterates()
        {
            IFn fn = DummyFn.CreateForReduce();

            CPV     v   = new CPV(new object[] { 1, 2, 3 });
            IReduce r   = (IReduce)v.rseq();
            object  ret = r.reduce(fn, 20);

            Expect(ret, EqualTo(26));
        }
Beispiel #7
0
        public void RSeqReduceWithStartIterates()
        {
            IFn fn = DummyFn.CreateForReduce();

            CPV     v   = new CPV(new object[] { 1, 2, 3 });
            IReduce r   = (IReduce)v.rseq();
            object  ret = r.reduce(fn, 20);

            Expect(ret).To.Be.An.Instance.Of <long>();
            Expect((long)ret).To.Equal(26);
        }
Beispiel #8
0
        public void RSeqReduceWithNoStartIterates()
        {
            MockRepository mocks = new MockRepository();
            IFn            fn    = mocks.StrictMock <IFn>();

            RMExpect.Call(fn.invoke(3, 2)).Return(5);
            RMExpect.Call(fn.invoke(5, 1)).Return(7);
            mocks.ReplayAll();

            CPV     v   = new CPV(new object[] { 1, 2, 3 });
            IReduce r   = (IReduce)v.rseq();
            object  ret = r.reduce(fn);

            Expect(ret, EqualTo(7));
            mocks.VerifyAll();
        }
Beispiel #9
0
        void handleOperation4(IList <MPI.Request> reqList_complete)
        {
            int[] arg1_values = new int[channel.RemoteSize];
            int[] arg2_values = new int[channel.RemoteSize];
            int[] arg3_values = new int[channel.RemoteSize];
            int[] arg4_values = new int[channel.RemoteSize];
            int[] arg5_values = new int[channel.RemoteSize];
            int[] arg6_values = new int[channel.RemoteSize];

            foreach (MPI.Request req in reqList_complete)
            {
                MPI.ReceiveRequest  recv_req = (MPI.ReceiveRequest)req;
                MPI.CompletedStatus status   = recv_req.Test();
                Tuple <int, int, int, int, int, int> value = (Tuple <int, int, int, int, int, int>)recv_req.GetValue();
                arg1_values [status.Source] = value.Item1;
                arg2_values [status.Source] = value.Item2;
                arg3_values [status.Source] = value.Item3;
                arg4_values [status.Source] = value.Item4;
                arg5_values [status.Source] = value.Item5;
                arg6_values [status.Source] = value.Item6;
            }

            IGather <int> arg1 = Gather <int> .create(channel, arg1_values);

            IReduce <int> arg2 = Reduce <int> .create(channel, arg2_values, sum, 0);

            IScan <int> arg3 = Scan <int> .create(channel, arg3_values, sum, 0);

            IGather <int> arg4 = Gather <int> .create(channel, arg4_values);

            IReduce <int> arg5 = Reduce <int> .create(channel, arg5_values, sum, 0);

            IScan <int> arg6 = Scan <int> .create(channel, arg6_values, sum, 0);

            int result = service.some_method_4(arg1, arg2, arg3, arg4, arg5, arg6);

            int[] broadcast_result = new int[channel.RemoteSize];
            for (int i = 0; i < broadcast_result.Length; i++)
            {
                broadcast_result [i] = result;
            }

            returnResult(broadcast_result, OPERATION_4);
        }
Beispiel #10
0
        void handleOperation1(IList <MPI.Request> reqList_complete)
        {
            int[] arg1_values = new int[channel.RemoteSize];
            int[] arg2_values = new int[channel.RemoteSize];
            int[] arg3_values = new int[channel.RemoteSize];
            int[] arg4_values = new int[channel.RemoteSize];
            int[] arg5_values = new int[channel.RemoteSize];
            int[] arg6_values = new int[channel.RemoteSize];

            foreach (MPI.Request req in reqList_complete)
            {
                MPI.ReceiveRequest  recv_req = (MPI.ReceiveRequest)req;
                MPI.CompletedStatus status   = recv_req.Test();
                Tuple <int, int, int, int, int, int> value = (Tuple <int, int, int, int, int, int>)recv_req.GetValue();
                arg1_values [status.Source] = value.Item1;
                arg2_values [status.Source] = value.Item2;
                arg3_values [status.Source] = value.Item3;
                arg4_values [status.Source] = value.Item4;
                arg5_values [status.Source] = value.Item5;
                arg6_values [status.Source] = value.Item6;
            }

            IGather <int> arg1 = Gather <int> .create(channel, arg1_values);

            IReduce <int> arg2 = Reduce <int> .create(channel, arg2_values, sum, 0);

            IScan <int> arg3 = Scan <int> .create(channel, arg3_values, sum, 0);

            IGather <int> arg4 = Gather <int> .create(channel, arg4_values);

            IReduce <int> arg5 = Reduce <int> .create(channel, arg5_values, sum, 0);

            IScan <int> arg6 = Scan <int> .create(channel, arg6_values, sum, 0);

            service.some_method_1(arg1, arg2, arg3, arg4, arg5, arg6);
        }
Beispiel #11
0
 public ISelect <_, TTo> Get <TTo>(IReduce <TOut, TTo> parameter)
 => new Exit <_, TIn, TOut, TTo>(_origin, Content(parameter is ILimitAware limit ? limit.Get() : 2),
Beispiel #12
0
 public ISelect <_, TTo> Get <TTo>(IReduce <T, TTo> parameter)
 => new Exit <_, T, T, TTo>(new Enter <_, T>(_origin),
        public static Output reduce <Input, Output>(this IEnumerable <Input> items, Output initial_value, IReduce <Input, Output> reducer)
        {
            var current_value = initial_value;

            foreach (var item in items)
            {
                current_value = reducer(current_value, item);
            }

            return(current_value);
        }
Beispiel #14
0
 public IScatter <int> some_method_7(IGather <int> arg1, IReduce <int> arg2, IScan <int> arg3, IGather <int> arg4, IReduce <int> arg5, IScan <int> arg6)
 {
     throw new NotImplementedException();
 }
Beispiel #15
0
 public void Add(IReduce <T> Action)
 {
     // add reduction conflict based on priority
     reduceActions.Add(Action);
 }
Beispiel #16
0
 public GroupMapAdapter(IReduce <T, IArrayMap <TKey, T> > reduce) => _reduce = reduce;