35 void SlurmDriver :: testInvariant ()
const
40 SlurmDriver :: SlurmDriver ()
49 ::StatusCode SlurmDriver ::
50 doManagerStep (Detail::ManagerData&
data)
const
53 using namespace msgEventLoop;
59 data.batchInit =
"export PATH LD_LIBRARY_PATH PYTHONPATH";
66 auto all_set = m_b_job_name && m_b_account && m_b_run_time;
73 ANA_MSG_ERROR(
"All parameters need to be set before job can be submitted");
74 return ::StatusCode::FAILURE;
82 assert (!
data.batchJobIndices.empty());
83 assert (
data.batchJobIndices.back() + 1 ==
data.batchJobIndices.size());
84 const std::size_t njob =
data.batchJobIndices.size();
88 int status=gSystem->CopyFile(
"RootCore.par",(
data.submitDir+
"/submit/RootCore.par").c_str());
94 std::ofstream
file ((
data.submitDir +
"/submit/submit").c_str());
96 file <<
"#!/bin/bash \n";
98 file <<
"#SBATCH --job-name=" << m_job_name <<
"\n";
99 file <<
"#SBATCH --output=slurm-%j.out\n";
100 file <<
"#SBATCH --error=slurm-%j.err\n";
101 file <<
"#SBATCH --account=" << m_account <<
"\n";
102 if(!m_partition .
empty())
file <<
"#SBATCH --partition=" << m_partition <<
"\n";
103 file <<
"#SBATCH --time=" << m_run_time <<
"\n";
104 if(!m_memory .
empty())
file <<
"#SBATCH --mem=" << m_memory <<
"\n";
105 if(!m_constraint.empty())
file <<
"#SBATCH --constraint=" << m_constraint <<
"\n";
111 file <<
"./run ${SLURM_ARRAY_TASK_ID}\n";
115 std::ostringstream cmd;
116 cmd <<
"cd " <<
data.submitDir <<
"/submit && sbatch --array=0-" << njob-1 <<
" " <<
data.options.castString (
Job::optSubmitFlags) <<
" submit";
117 if (gSystem->Exec (cmd.str().c_str()) != 0)
120 data.submitted =
true;
127 return ::StatusCode::SUCCESS;
131 void SlurmDriver :: SetJobName(std::string job_name)
134 m_job_name = job_name;
136 void SlurmDriver :: SetAccount(std::string account)
141 void SlurmDriver :: SetPartition(std::string partition)
143 m_partition = partition;
145 void SlurmDriver :: SetRunTime(std::string run_time)
148 m_run_time = run_time;
150 void SlurmDriver :: SetMemory(std::string memory)
154 void SlurmDriver :: SetConstrain(std::string constraint)
156 m_constraint = constraint;
#define RCU_NEW_INVARIANT(x)
#define RCU_READ_INVARIANT(x)
char data[hepevt_bytes_allocation_ATLAS]
#define RCU_THROW_MSG(message)
ClassImp(EL::SlurmDriver) namespace EL
static const Attributes_t empty
virtual::StatusCode doManagerStep(Detail::ManagerData &data) const override
static const std::string optBatchSharedFileSystem
description: batch-specific options rationale: these options are for configuring batch drivers
static const std::string optSubmitFlags
description: the name of the option for supplying extra submit parameters to batch systems rationale:...
static const std::string optBatchSlurmWrapperExec
Append a command before the main executable is called This is useful is you want to execute the comma...
static const std::string optBatchSlurmExtraConfigLines
The content of this string will be executed in the job script on the worker node before the main exec...
a Driver for running on SLURM batch systems
@ doResubmit
call the actual doResubmit method
@ submitJob
do the actual job submission
@ batchScriptVar
create the variables needed for the batch-run script
This module defines the arguments passed from the BATCH driver to the BATCH worker.