public IReduce <int> some_method_6(int arg1, int arg2, int arg3, IScatter <int> arg4, IScatter <int> arg5, IScatter <int> arg6) { MPI.RequestList reqList = new MPI.RequestList(); sendArguments(OPERATION_6, arg1, arg2, arg3, arg4, arg5, arg6, ref reqList); receiveResult <int> (ref reqList, OPERATION_6); IList <MPI.Request> reqList_complete = reqList.WaitAll(); int[] result_values = takeResults(reqList_complete); return(Reduce <int> .create(channel, result_values, sum, 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); }
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); }