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; } }
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>(); }
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>(); }