Ejemplo n.º 1
0
        private float RunJob(ParameterInstructions job)
        {
            InitializedModeParameters(job);
            ProcessedSoFar = 0;
            Thread.MemoryBarrier();
            if (Parallel)
            {
                System.Threading.Tasks.Parallel.For(0, Households.Length, new ParallelOptions()
                {
                    MaxDegreeOfParallelism = Environment.ProcessorCount
                }
                                                    , RunTasha);
                //System.Threading.Tasks.Parallel.ForEach( this.Households, new ParallelOptions() { MaxDegreeOfParallelism = Environment.ProcessorCount },
                //RunTasha );
            }
            else
            {
                for (int i = 0; i < Households.Length; i++)
                {
                    RunTasha(i);
                }
            }

            return(HouseholdEvaluation.AsParallel().Sum());
        }
        private void InitializedModeParameters(ParameterInstructions job)
        {
            var numberOfParameters = job.Names.Length;
            var modes         = AllModes;
            var numberOfModes = modes.Count;

            System.Threading.Tasks.Parallel.For(0, numberOfParameters, new ParallelOptions()
            {
                MaxDegreeOfParallelism = Environment.ProcessorCount
            },
                                                delegate(int i)
            {
                int endOfMode;
                string mode      = job.Names[i].Substring(0, endOfMode = job.Names[i].IndexOf('.'));
                string parameter = job.Names[i].Substring(endOfMode + 1);
                // find the matching mode
                for (int j = 0; j < numberOfModes; j++)
                {
                    if (mode == modes[j].ModeName)
                    {
                        AssignParameter(modes[j], parameter, job.Values[i]);
                        break;
                    }
                }
            });
        }
Ejemplo n.º 3
0
        private void InitializedModeParameters(ParameterInstructions job)
        {
            var numberOfParameters = job.Names.Length;
            var modes         = AllModes;
            var numberOfModes = modes.Count;

            try
            {
                System.Threading.Tasks.Parallel.For(0, numberOfParameters, new ParallelOptions()
                {
                    MaxDegreeOfParallelism = Environment.ProcessorCount
                },
                                                    delegate(int i)
                {
                    int endOfMode;
                    string mode      = job.Names[i].Substring(0, endOfMode = job.Names[i].IndexOf('.'));
                    string parameter = job.Names[i].Substring(endOfMode + 1);
                    // find the matching mode
                    for (int j = 0; j < numberOfModes; j++)
                    {
                        if (mode == modes[j].ModeName)
                        {
                            AssignParameter(modes[j], parameter, job.Values[i]);
                            break;
                        }
                    }
                });
            }
            catch (AggregateException e)
            {
                if (e.InnerException is XTMFRuntimeException)
                {
                    throw new XTMFRuntimeException(e.InnerException.Message);
                }
                else
                {
                    throw new XTMFRuntimeException(e.InnerException.Message + "\r\n" + e.InnerException.StackTrace);
                }
            }
        }
Ejemplo n.º 4
0
 private void ReportResult(ParameterInstructions job)
 {
     Client.SendCustomMessage(job, 1);
 }