Beispiel #1
0
        public void assignExperiments(ref List <MonitoredExperimentViewModel> pendingExperiments
                                      , ref List <HerdAgentViewModel> freeHerdAgents
                                      , ref List <ExperimentBatch> experimentAssignments
                                      , CancellationToken cancelToken, Logger.LogFunction logFunction = null)
        {
            experimentAssignments.Clear();
            List <MonitoredExperimentViewModel> experimentBatch;

            while (pendingExperiments.Count > 0 && freeHerdAgents.Count > 0)
            {
                HerdAgentViewModel agentVM = freeHerdAgents[0];
                freeHerdAgents.RemoveAt(0);
                //usedHerdAgents.Add(agentVM);
                int numProcessors = Math.Max(1, agentVM.numProcessors - 1); //we free one processor

                experimentBatch = new List <MonitoredExperimentViewModel>();
                int numPendingExperiments = pendingExperiments.Count;
                for (int i = 0; i < Math.Min(numProcessors, numPendingExperiments); i++)
                {
                    experimentBatch.Add(pendingExperiments[0]);
                    pendingExperiments.RemoveAt(0);
                }
                experimentAssignments.Add(new ExperimentBatch("batch-" + batchId, experimentBatch, agentVM, m_evaluationMonitor
                                                              , cancelToken, logFunction));
                ++batchId;
            }
        }
Beispiel #2
0
 static public AppVersion BestMatch(List <AppVersion> appVersions, HerdAgentViewModel agent)
 {
     foreach (AppVersion version in appVersions)
     {
         if (version.Requirements.Architecture == agent.ProcessorArchitecture)
         {
             return(version);
         }
     }
     return(null);
 }
 public ExperimentBatch(string name, List<MonitoredExperimentViewModel> experiments,HerdAgentViewModel herdAgent
     ,PlotViewModel evaluationPlot,CancellationToken cancelToken, Logger.LogFunction logFunction)
 {
     m_name = name;
     m_monitoredExperiments = experiments;
     m_herdAgent = herdAgent;
     m_logFunction = logFunction;
     m_shepherd = new Shepherd();
     m_shepherd.setLogMessageHandler(logFunction);
     m_cancelToken = cancelToken;
     m_evaluationPlot = evaluationPlot;
     m_experimentSeriesId = new Dictionary<string, int>();
 }
Beispiel #4
0
 public ExperimentBatch(string name, List <MonitoredExperimentViewModel> experiments, HerdAgentViewModel herdAgent
                        , PlotViewModel evaluationPlot, CancellationToken cancelToken, Logger.LogFunction logFunction)
 {
     m_name = name;
     m_monitoredExperiments = experiments;
     m_herdAgent            = herdAgent;
     m_logFunction          = logFunction;
     m_shepherd             = new Shepherd();
     m_shepherd.setLogMessageHandler(logFunction);
     m_cancelToken        = cancelToken;
     m_evaluationPlot     = evaluationPlot;
     m_experimentSeriesId = new Dictionary <string, int>();
 }