| diff --git a/src/pipeline_jobs.cpp b/src/pipeline_jobs.cpp
index 619752f..ca0aae5 100644
--- a/src/pipeline_jobs.cpp
+++ b/src/pipeline_jobs.cpp
@@ -501,28 +501,26 @@ bool RelionJob::saveJobSubmissionScript(std::string newfilename, std::string out
int nthr = (joboptions.find("nr_threads") != joboptions.end()) ? joboptions["nr_threads"].getNumber(error_message) : 1;
if (error_message != "") return false;
- int ncores = nmpi * nthr;
- int ndedi = joboptions["min_dedicated"].getNumber(error_message);
+ int nr_nodes = (joboptions.find("nr_nodes") != joboptions.end()) ? joboptions["nr_nodes"].getNumber(error_message) : 1;
if (error_message != "") return false;
- float fnodes = (float)ncores / (float)ndedi;
- int nnodes = CEIL(fnodes);
- if (fmod(fnodes, 1) > 0)
- {
- std:: cout << std::endl;
- std::cout << " Warning! You're using " << nmpi << " MPI processes with " << nthr << " (略
- std::cout << " It is more efficient to make the number of cores (i.e. mpi*threads) a (略
- }
+ int ncores = nmpi * nthr;
+
+ int nsum = nr_nodes * ncores;
+ int nmpiproc = nr_nodes * nmpi;
fh.clear(); // reset eof if happened...
fh.seekg(0, std::ios::beg);
std::string line;
std::map<std::string, std::string> replacing;
+ replacing["XXXversionXXX"] = RELION_SHORT_VERSION;
+ replacing["XXXsumXXX"] = floatToString(nsum);
+ replacing["XXXmpiprocXXX"] = floatToString(nmpiproc);
+
replacing["XXXmpinodesXXX"] = floatToString(nmpi);
replacing["XXXthreadsXXX"] = floatToString(nthr);
replacing["XXXcoresXXX"] = floatToString(ncores);
- replacing["XXXdedicatedXXX"] = floatToString(ndedi);
- replacing["XXXnodesXXX"] = floatToString(nnodes);
+ replacing["XXXnodesXXX"] = floatToString(nr_nodes);
replacing["XXXnameXXX"] = outputname;
replacing["XXXerrfileXXX"] = outputname + "run.err";
replacing["XXXoutfileXXX"] = outputname + "run.out";
@@ -821,7 +819,8 @@ void RelionJob::initialise(int _job_type)
const char qsub_nrmpi_val = (qsub_nrmpi_text ? atoi(qsub_nrmpi_text) : DEFAULTNRMPI);
if (has_mpi)
{
- joboptions["nr_mpi"] = JobOption("Number of MPI procs:", qsub_nrmpi_val , 1, mpi_max, 1, (略
+ joboptions["nr_mpi"] = JobOption("Number of MPI procs per node:", qsub_nrmpi_val , 1, mpi(略
+ joboptions["nr_nodes"] = JobOption("Number of nodes:", 1, 1, 8 , 1, "Number of nodes");
}
const char *thread_max_input = getenv("RELION_THREAD_MAX");
@@ -908,11 +907,12 @@ Its default location may be changed by setting the environment variable RELION_Q
In the template script a number of variables will be replaced: \n \
XXXcommandXXX = relion command + arguments; \n \
XXXqueueXXX = The queue name; \n \
-XXXmpinodesXXX = The number of MPI nodes; \n \
-XXXthreadsXXX = The number of threads; \n \
+XXXmpinodesXXX = The number of MPI per node; \n \
+XXXmpiprocXXX = The total number of MPI; \n \
+XXXthreadsXXX = The number of threads per MPI; \n \
XXXcoresXXX = XXXmpinodesXXX * XXXthreadsXXX; \n \
-XXXdedicatedXXX = The minimum number of dedicated cores on each node; \n \
-XXXnodesXXX = The number of requested nodes = CEIL(XXXcoresXXX / XXXdedicatedXXX); \n \
+XXXsumXXX = The total number of core; \n \
+XXXnodesXXX = The number of requested nodes \n \
If these options are not enough for your standard jobs, you may define a user-specified number of extr(略
The number of extra variables is controlled through the environment variable RELION_QSUB_EXTRA_COUNT. \
Their help text is set by the environment variables RELION_QSUB_EXTRA1, RELION_QSUB_EXTRA2, etc \
@@ -922,9 +922,6 @@ Likewise, default values for the extra entries can be set through environment va
But note that (unlike all other entries in the GUI) the extra values are not remembered from one run (略
// Check for environment variable RELION_QSUB_TEMPLATE
- char * my_minimum_dedicated = getenv ("RELION_MINIMUM_DEDICATED");
- int minimum_nr_dedicated = (my_minimum_dedicated == NULL) ? DEFAULTMININIMUMDEDICATED : textTo(略
- joboptions["min_dedicated"] = JobOption("Minimum dedicated cores per node:", minimum_nr_dedica(略
// Need the std::string(), as otherwise it will be overloaded and passed as a boolean....
joboptions["other_args"] = JobOption("Additional arguments:", std::string(""), "In this box comm(略
|