ATLAS Offline Software
Loading...
Searching...
No Matches
TorqueDriver.cxx File Reference
#include <EventLoop/TorqueDriver.h>
#include <AsgMessaging/StatusCode.h>
#include <EventLoop/Job.h>
#include <EventLoop/ManagerData.h>
#include <EventLoop/MessageCheck.h>
#include <TSystem.h>
#include <sstream>
Include dependency graph for TorqueDriver.cxx:

Go to the source code of this file.

Functions

 ClassImp (EL::TorqueDriver) namespace EL

Function Documentation

◆ ClassImp()

ClassImp ( EL::TorqueDriver )
Author
Nils Krumnack

Definition at line 25 of file TorqueDriver.cxx.

28{
29 void TorqueDriver ::
30 testInvariant () const
31 {
32 RCU_INVARIANT (this != 0);
33 }
34
35
36
37 TorqueDriver ::
38 TorqueDriver ()
39 {
40 RCU_NEW_INVARIANT (this);
41 }
42
43
44
45 ::StatusCode TorqueDriver ::
46 doManagerStep (Detail::ManagerData& data) const
47 {
48 RCU_READ_INVARIANT (this);
49 using namespace msgEventLoop;
50 ANA_CHECK (BatchDriver::doManagerStep (data));
51 switch (data.step)
52 {
53 case Detail::ManagerStep::batchScriptVar:
54 {
55 data.batchJobId = "EL_JOBID=$PBS_ARRAYID\n";
56 }
57 break;
58
59
60 case Detail::ManagerStep::submitJob:
61 case Detail::ManagerStep::doResubmit:
62 {
63 if (data.resubmit)
64 {
65 ANA_MSG_ERROR ("resubmission not supported for the Torque driver");
66 return StatusCode::FAILURE;
67 }
68
69 assert (!data.batchJobIndices.empty());
70 assert (data.batchJobIndices.back() + 1 == data.batchJobIndices.size());
71 const std::size_t njob = data.batchJobIndices.size();
72
73 std::ostringstream cmd;
74 cmd << "cd " << data.submitDir << "/submit && qsub "
75 << data.options.castString (Job::optSubmitFlags)
76 << " -t 0-" << (njob-1) << " run";
77 if (gSystem->Exec (cmd.str().c_str()) != 0)
78 {
79 ANA_MSG_ERROR ("failed to execute: " << cmd.str());
80 return StatusCode::FAILURE;
81 }
82 data.submitted = true;
83 }
84 break;
85
86 default:
87 break;
88 }
89 return ::StatusCode::SUCCESS;
90 }
91}
#define RCU_INVARIANT(x)
Definition Assert.h:189
#define RCU_NEW_INVARIANT(x)
Definition Assert.h:221
#define RCU_READ_INVARIANT(x)
Definition Assert.h:217
#define ANA_MSG_ERROR(xmsg)
Macro printing error messages.
#define ANA_CHECK(EXP)
check whether the given expression was successful