public override bool Mathces(Task task) { if (task.Package.ToUpperInvariant() == "DALTON") return true; return false; }
public Task(Task otherTask) : base(otherTask) { if (otherTask.OutputParams != null) OutputParams = new Dictionary<string, string>(otherTask.OutputParams); if (otherTask.PackageEngineState != null) this.PackageEngineState = (PackageEngineState) otherTask.PackageEngineState.Clone(); Time = new TaskTimeMeasurement(otherTask.Time); Incarnation = new IncarnationParams(otherTask.Incarnation); if (otherTask.Estimations != null) Estimations = new Dictionary<string, double>(otherTask.Estimations); CurrentSchedule = null; if (otherTask.CurrentSchedule != null) { CurrentSchedule = new TaskSchedule(otherTask.CurrentSchedule); // immutable: this.AssignedResource = otherTask.AssignedResource; this.AssignedNodes = otherTask.AssignedNodes; } State = otherTask.State; _inputsProcessed = otherTask._inputsProcessed; _inputsProcessingError = otherTask._inputsProcessingError; _failReason = otherTask._failReason; if (otherTask._lastEvent != null && otherTask._lastEvent.HasValue) _lastEvent = otherTask._lastEvent.Value; }
public override bool Mathces(Task task) { if (task.AssignedTo.ProviderName == CONST.Providers.WinPc) return true; return false; }
public override bool Mathces(Task task) { if (task.Package.ToUpperInvariant() == PACK_NANOFLOW) return true; return false; }
public override void UploadAndPrepareInputFiles(Task task, string ftpFolder) { var xyzInputFile = task.InputFiles[0]; // the only input string xyzMoleculeDescription = IOProxy.Storage.GetContent(xyzInputFile.StorageId); string properMoleculeDescription = GetProperMoleculeDescription(XyzToAtmos(xyzMoleculeDescription)); var paramsDictRaw = new Dictionary<string, string>(); paramsDictRaw.Add(ATOMS_COUNT_PARAM_NAME, _atomsCount.ToString()); int procsCount = task.AssignedTo.Cores.Aggregate((cur, next) => cur + next); paramsDictRaw.Add(PROCS_COUNT_PARAM_NAME, procsCount.ToString()); foreach (var paramName in task.Params.Keys) paramsDictRaw.Add(paramName, task.Params[paramName]); ModifyParams(paramsDictRaw); var paramsDict = new Dictionary<string, string>(); foreach (string paramName in paramsDictRaw.Keys) { string paramValue = paramsDictRaw[paramName]; paramsDict[paramName] = paramValue; paramsDict[paramName + "=" + paramValue] = paramName + "=" + paramValue; } string template = GetInputFileTemplate(); string content = template.Replace(GetTemplateParamDelim() + MOLECULE_PARAM_NAME + GetTemplateParamDelim(), properMoleculeDescription); content = InsertParams(content, paramsDict); content = content.Replace("\r\n", "\n"); IOProxy.Ftp.UploadFileContent(content, ftpFolder, GetInputFileNameWithExtension()); }
public override bool Mathces(Task task) { string pack = task.Package.ToUpperInvariant(); if (pack == "MD_KMC" || pack == "MD-KMC" || pack == "MDKMC") return true; return false; }
public override void OnStart(Task task, string ftpFolder) { var provider = Broker.ProviderByName(CONST.Providers.Metacluster); string providedTaskId = task.TaskId.ToString(); task.Incarnation.ProvidedTaskId = providedTaskId; //task.Incarnation.InputFolderPath = provider.GetFtpInputFolder(providedTaskId); //task.Incarnation.OutputFolderPath = provider.GetFtpOutputFolder(providedTaskId); }
public override void OnStart(Task task, string ftpFolder) { var provider = Broker.ProviderByName(CONST.Providers.WinPc); string providedTaskId = task.TaskId.ToString(); task.Incarnation.ProvidedTaskId = providedTaskId; IOProxy.Ftp.MakePath(ftpFolder); //task.Incarnation.InputFolderPath = WinPcProvider.FTP_FOLDER + providedTaskId + "/in/"; //task.Incarnation.OutputFolderPath = WinPcProvider.FTP_FOLDER + providedTaskId + "/out/"; }
public override void SetIncarnationParams(Task task) { string outputFileName = DEFAULT_OUTPUT_NAME + OUTPUT_FILE_EXT; if (task.OutputFiles != null && task.OutputFiles.Any(f => f.FileName.EndsWith(OUTPUT_FILE_EXT))) outputFileName = task.OutputFiles.First(file => file.FileName.EndsWith(OUTPUT_FILE_EXT)).FileName; string cmdLine = "zindo1.sh"; cmdLine += " " + GetInputFileNameWithExtension(); cmdLine += " " + outputFileName; // with extension cmdLine += " " + Path.GetFileNameWithoutExtension(outputFileName) + TMP_FILE_EXT; task.Incarnation.CommandLine = cmdLine; //task.Incarnation.PackageNameInConfig = PACK_SEMP; }
public override void SetIncarnationParams(Task task) { string outputFileName = DEFAULT_OUTPUT_NAME + OUTPUT_FILE_EXT; if (task.OutputFiles != null && task.OutputFiles.Any(f => f.FileName.EndsWith(OUTPUT_FILE_EXT))) outputFileName = task.OutputFiles.First(file => file.FileName.EndsWith(OUTPUT_FILE_EXT)).FileName; string cmdLine = "gms"; cmdLine += " " + GetInputFileNameWithExtension(); cmdLine += " " + outputFileName; task.Incarnation.CommandLine = cmdLine; //task.Incarnation.StdOutFile = ""; //task.Incarnation.PackageNameInConfig = PACK_GAMESS; }
public override void UploadAndPrepareInputFiles(Task task, string ftpFolder) { IOProxy.Ftp.MakeFolder(ftpFolder, "IO"); ftpFolder += "IO/"; foreach (string fileName in CONST.Path.Templates.NanoFlowConstFiles) IOProxy.Ftp.UploadLocalFile(fileName, ftpFolder, Path.GetFileName(fileName)); foreach (var file in task.InputFiles) { byte[] bytes = IOProxy.Storage.GetBinaryContent(file.StorageId); IOProxy.Ftp.UploadFileContent(bytes, ftpFolder, file.FileName); } string content = File.ReadAllText(CONST.Path.Templates.NanoFlow); var applicableParamsNames = task.Params.Keys.Where(key => task.Params[key] != null); foreach (var paramName in applicableParamsNames) { Regex regex = new Regex( "(?<=" + // перед искомым должно идти нижеследующее: paramName + @"[^=]*" + // сколько угодно символов, которые не "=" @"=" + @"\s*" + // сколько угодно пробельных символов "\"" + // кавычка ")" // собственно, ищем сколько угодно не кавычек: + "[^\"]*" + "(?=" + // после искомого должно идти нижеследующее: "\"" + // кавычка @"\s*" + // сколько угодно пробельных символов @";" + ")" ); content = regex.Replace(content, task.Params[paramName]); } IOProxy.Ftp.UploadFileContent(content, ftpFolder, Path.GetFileName(CONST.Path.Templates.NanoFlow)); }
public override void SetIncarnationParams(Task task) { SetCommandLine(task, "runOMP.sh"); //task.Incarnation.PackageNameInConfig = "PLASMON"; }
public override void UploadAndPrepareInputFiles(Task task, string ftpFolder) { foreach (var file in task.InputFiles) IOProxy.Storage.MoveOutside(file.StorageId, ftpFolder + file.FileName); }
public override void SetIncarnationParams(Task task) { task.Incarnation.CommandLine = String.Format("dalton {0}", Path.GetFileNameWithoutExtension(task.InputFiles[0].FileName)); //task.Incarnation.PackageNameInConfig = "DALTON"; }
public override void UploadAndPrepareInputFiles(Task task, string ftpFolder) { base.UploadAndPrepareInputFiles(task, ftpFolder); IOProxy.Ftp.UploadLocalFile(CONST.Path.Templates.PlasmonInitialSpectr, ftpFolder, Path.GetFileName(CONST.Path.Templates.PlasmonInitialSpectr)); }
public override void SetIncarnationParams(Task task) { task.Incarnation.CommandLine = String.Format("runMpi.sh {0}", task.InputFiles[0].FileName); //task.Incarnation.PackageNameInConfig = "BELMAN"; }
public override void OnFinish(Task task, string ftpFolder) { const int MAX_ATTEMPTS = 3; foreach (string paramName in task.Params.Keys) { if (paramName.ToLower() == "osc_freq") { bool succeeded = false; Exception lastException = null; for (int attemptNum = 0; !succeeded && attemptNum < MAX_ATTEMPTS; attemptNum++) { try { var singleOutputFile = task.OutputFiles.Last(file => file.FileName.EndsWith(OUTPUT_FILE_EXT)); string fileName = Path.GetFileName(singleOutputFile.FileName); string folderName = ftpFolder + Path.GetDirectoryName(singleOutputFile.FileName); if (!folderName.EndsWith("/")) folderName += "/"; string content = IOProxy.Ftp.DownloadFileContent(folderName, fileName); double[] values = ExtractValues(content); double[] intervals = GetIntervals(); int[] freqs = CalcFreqs(intervals, values); var writer = new StringWriter(); writer.WriteLine("Density of phonon (vibration) states (doubled)"); for (int i = 0; i < freqs.Length; i++) writer.WriteLine("{0,4}-{1,-4} {2,4} {3}", intervals[i], intervals[i + 1], (intervals[i] + intervals[i + 1]) / 2, freqs[i]); writer.Close(); IOProxy.Ftp.UploadFileContent(writer.ToString(), folderName, "phonon.hist"); succeeded = true; } catch (Exception e) { lastException = e; } } if (!succeeded) throw lastException; } } base.OnFinish(task, ftpFolder); }
public override void SetIncarnationParams(Task task) { int coresCount = task.AssignedTo.Cores.Sum(); task.Incarnation.CommandLine = String.Format("mpirun {0} NanoFlow", coresCount); //task.Incarnation.PackageNameInConfig = PACK_NANOFLOW; }
public override void UploadAndPrepareInputFiles(Task task, string ftpFolder) { base.UploadAndPrepareInputFiles(task, ftpFolder); string content = File.ReadAllText(CONST.Path.Templates.NTDMFT); IOProxy.Ftp.UploadFileContent(content, ftpFolder, Path.GetFileName(CONST.Path.Templates.NTDMFT)); }
public override void SetIncarnationParams(Task task) { int coresCount = task.AssignedTo.Cores.Sum(); task.Incarnation.CommandLine = String.Format("mpirun {0} spfemwSEPA.out spfemwSEPA.list", coresCount); //task.Incarnation.PackageNameInConfig = "NTDMFT"; }
public override void SetIncarnationParams(Task task) { task.Incarnation.CommandLine = String.Format("naen"); //task.Incarnation.PackageNameInConfig = "NAEN"; }
public override void UploadAndPrepareInputFiles(Task task, string ftpFolder) { base.UploadAndPrepareInputFiles(task, ftpFolder); IOProxy.Storage.MoveOutside(task.InputFiles[0].StorageId, ftpFolder + "QDLaser.bin"); }
public override void UploadAndPrepareInputFiles(Task task, string ftpFolder) { if (String.IsNullOrEmpty(task.Params[CONST.Params.Method])) task.Params.Remove(CONST.Params.Method); _commandLineParams = new List<string>(); IOProxy.Ftp.MakeFolder(ftpFolder, "Graphs"); string templateFilePath = GetTemplateFilePath(); string content = File.ReadAllText(templateFilePath); foreach (string paramName in task.Params.Keys) { string paramValue = task.Params[paramName]; if (paramValue.ToLower() == "true") paramValue = "T"; else if (paramValue.ToLower() == "false") paramValue = "F"; Regex regex = new Regex( "(?<=" + // до имени параметра не должно быть никаких символов: @"[^\S]" + // перед искомым должно идти нижеследующее: paramName.ToUpper() + @"\s*" + // сколько угодно пробельных символов "=" + @"\s*" + // сколько угодно пробельных символов ")" // собственно, ищем сколько угодно не запятых и не пробелов: + @"[^,\s]*" + "(?=" + // после искомого должно идти нижеследующее: @"\s*" + // сколько угодно пробельных символов "[,/]" + ")" ); if (regex.IsMatch(content)) content = regex.Replace(content, paramValue); else _commandLineParams.Add(paramName + "=" + paramValue); } string fileName = Path.GetFileName(templateFilePath); IOProxy.Ftp.UploadFileContent(content, ftpFolder, fileName); }
public override void OnFinish(Task task, string ftpFolder) { }
public override void OnFinish(Task task, string ftpFolder) { // todo : directly copy files to/from clusters }
public override void SetIncarnationParams(Task task) { int coresCount = task.AssignedTo.Cores.Sum(); task.Incarnation.CommandLine = String.Format("mpirun {0} mdkmc.x", coresCount); //task.Incarnation.PackageNameInConfig = "MD-KMC"; }
public override void SetIncarnationParams(Task task) { SetCommandLine(task, "runMPI.sh"); //task.Incarnation.PackageNameInConfig = "JAGGREGATE"; }
public override void SetIncarnationParams(Task task) { task.Incarnation.CommandLine = String.Format( //"ntestp.sh {3} {0} {1} {2}", "TESTP {3} {0} {1} {2}", task.InputFiles[0].FileName, task.InputFiles[1].FileName, (!String.IsNullOrEmpty(task.OutputFiles[0].FileName))? task.OutputFiles[0].FileName: task.OutputFiles[0].SlotName, task.Params["operation"] ); //task.Incarnation.PackageNameInConfig = "TESTP"; }
public override void SetIncarnationParams(Task task) { int coresCount = task.AssignedTo.Cores.Sum(); task.Incarnation.CommandLine = String.Format("mpirun -np {0} MC", coresCount); //task.Incarnation.PackageNameInConfig = "UPCONVERSION"; }
public override void OnManualStart(Task task, string ftpFolder) { task.InputFiles[0].FileName = GetInputFileNameWithExtension(); base.OnManualStart(task, ftpFolder); }