CMS 3D CMS Logo

TritonService.h
Go to the documentation of this file.
1 #ifndef HeterogeneousCore_SonicTriton_TritonService
2 #define HeterogeneousCore_SonicTriton_TritonService
3 
5 
6 #include <vector>
7 #include <unordered_set>
8 #include <unordered_map>
9 #include <string>
10 #include <functional>
11 #include <utility>
12 
13 #include "grpc_client.h"
14 
15 //forward declarations
16 namespace edm {
17  class ActivityRegistry;
19  class PathsAndConsumesOfModulesBase;
20  class ProcessContext;
21  class ModuleDescription;
22 } // namespace edm
23 
24 enum class TritonServerType { Remote = 0, LocalCPU = 1, LocalGPU = 2 };
25 
27 public:
28  //classes and defs
29  struct FallbackOpts {
31  : enable(pset.getUntrackedParameter<bool>("enable")),
32  debug(pset.getUntrackedParameter<bool>("debug")),
33  verbose(pset.getUntrackedParameter<bool>("verbose")),
34  useDocker(pset.getUntrackedParameter<bool>("useDocker")),
35  useGPU(pset.getUntrackedParameter<bool>("useGPU")),
36  retries(pset.getUntrackedParameter<int>("retries")),
37  wait(pset.getUntrackedParameter<int>("wait")),
38  instanceName(pset.getUntrackedParameter<std::string>("instanceName")),
39  tempDir(pset.getUntrackedParameter<std::string>("tempDir")),
40  imageName(pset.getUntrackedParameter<std::string>("imageName")),
41  sandboxName(pset.getUntrackedParameter<std::string>("sandboxName")) {}
42 
43  bool enable;
44  bool debug;
45  bool verbose;
46  bool useDocker;
47  bool useGPU;
48  int retries;
49  int wait;
54  };
55  struct Server {
57  : url(pset.getUntrackedParameter<std::string>("address") + ":" +
58  std::to_string(pset.getUntrackedParameter<unsigned>("port"))),
59  isFallback(pset.getUntrackedParameter<std::string>("name") == fallbackName),
60  useSsl(pset.getUntrackedParameter<bool>("useSsl")),
62  if (useSsl) {
63  sslOptions.root_certificates = pset.getUntrackedParameter<std::string>("rootCertificates");
64  sslOptions.private_key = pset.getUntrackedParameter<std::string>("privateKey");
65  sslOptions.certificate_chain = pset.getUntrackedParameter<std::string>("certificateChain");
66  }
67  }
68  Server(const std::string& name_, const std::string& url_, TritonServerType type_)
69  : url(url_), isFallback(name_ == fallbackName), useSsl(false), type(type_) {}
70 
71  //members
73  bool isFallback;
74  bool useSsl;
76  triton::client::SslOptions sslOptions;
77  std::unordered_set<std::string> models;
78  static const std::string fallbackName;
80  };
81  struct Model {
82  Model(const std::string& path_ = "") : path(path_) {}
83 
84  //members
86  std::unordered_set<std::string> servers;
87  std::unordered_set<unsigned> modules;
88  };
89  struct Module {
90  //currently assumes that a module can only have one associated model
91  Module(const std::string& model_) : model(model_) {}
92 
93  //members
95  };
96 
98  ~TritonService() = default;
99 
100  //accessors
101  void addModel(const std::string& modelName, const std::string& path);
102  Server serverInfo(const std::string& model, const std::string& preferred = "") const;
103  const std::string& pid() const { return pid_; }
104 
105  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
106 
107 private:
112 
113  bool verbose_;
119  std::unordered_map<std::string, Model> unservedModels_;
120  //this represents a many:many:many map
121  std::unordered_map<std::string, Server> servers_;
122  std::unordered_map<std::string, Model> models_;
123  std::unordered_map<unsigned, Module> modules_;
124 };
125 
126 #endif
TritonService::startedFallback_
bool startedFallback_
Definition: TritonService.h:117
TritonService::Module::model
std::string model
Definition: TritonService.h:94
TritonService::Server
Definition: TritonService.h:55
electrons_cff.bool
bool
Definition: electrons_cff.py:366
funct::false
false
Definition: Factorize.h:29
TritonService::FallbackOpts::verbose
bool verbose
Definition: TritonService.h:45
TritonService::Server::useSsl
bool useSsl
Definition: TritonService.h:74
TritonService::Model
Definition: TritonService.h:81
ActivityRegistry
TritonService::fallbackOpts_
FallbackOpts fallbackOpts_
Definition: TritonService.h:114
TritonService::allowAddModel_
bool allowAddModel_
Definition: TritonService.h:116
TritonService::Model::servers
std::unordered_set< std::string > servers
Definition: TritonService.h:86
TritonService::Model::modules
std::unordered_set< unsigned > modules
Definition: TritonService.h:87
TritonService::Server::Server
Server(const std::string &name_, const std::string &url_, TritonServerType type_)
Definition: TritonService.h:68
edm
HLT enums.
Definition: AlignableModifier.h:19
edm::ProcessContext
Definition: ProcessContext.h:27
TritonService::Server::fallbackAddress
static const std::string fallbackAddress
Definition: TritonService.h:79
TritonService::FallbackOpts::imageName
std::string imageName
Definition: TritonService.h:52
TritonService::models_
std::unordered_map< std::string, Model > models_
Definition: TritonService.h:122
TritonService::currentModuleId_
unsigned currentModuleId_
Definition: TritonService.h:115
TritonService::modules_
std::unordered_map< unsigned, Module > modules_
Definition: TritonService.h:123
TritonService::preModuleDestruction
void preModuleDestruction(edm::ModuleDescription const &)
Definition: TritonService.cc:157
TritonService::FallbackOpts::debug
bool debug
Definition: TritonService.h:44
TritonService::Module::Module
Module(const std::string &model_)
Definition: TritonService.h:91
ReggeGribovPartonMC_EposLHC_2760GeV_PbPb_cfi.model
model
Definition: ReggeGribovPartonMC_EposLHC_2760GeV_PbPb_cfi.py:11
edm::ModuleDescription
Definition: ModuleDescription.h:21
TritonService::Server::sslOptions
triton::client::SslOptions sslOptions
Definition: TritonService.h:76
TritonService::preModuleConstruction
void preModuleConstruction(edm::ModuleDescription const &)
Definition: TritonService.cc:136
HLTEgPhaseIITestSequence_cff.modelName
modelName
Definition: HLTEgPhaseIITestSequence_cff.py:16
TritonService::unservedModels_
std::unordered_map< std::string, Model > unservedModels_
Definition: TritonService.h:119
TritonService::Server::fallbackName
static const std::string fallbackName
Definition: TritonService.h:78
TritonService::Model::Model
Model(const std::string &path_="")
Definition: TritonService.h:82
edm::ActivityRegistry
Definition: ActivityRegistry.h:134
TritonService::Server::url
std::string url
Definition: TritonService.h:72
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
TritonService::Server::type
TritonServerType type
Definition: TritonService.h:75
TritonService::Server::models
std::unordered_set< std::string > models
Definition: TritonService.h:77
TritonServerType::LocalCPU
edm::ParameterSet
Definition: ParameterSet.h:47
type
type
Definition: SiPixelVCal_PayloadInspector.cc:39
TritonService::addModel
void addModel(const std::string &modelName, const std::string &path)
Definition: TritonService.cc:141
TritonService::preBeginJob
void preBeginJob(edm::PathsAndConsumesOfModulesBase const &, edm::ProcessContext const &)
Definition: TritonService.cc:200
TritonService::FallbackOpts::instanceName
std::string instanceName
Definition: TritonService.h:50
createfilelist.int
int
Definition: createfilelist.py:10
TritonService::FallbackOpts::FallbackOpts
FallbackOpts(const edm::ParameterSet &pset)
Definition: TritonService.h:30
TritonService::Server::isFallback
bool isFallback
Definition: TritonService.h:73
TritonService::serverInfo
Server serverInfo(const std::string &model, const std::string &preferred="") const
Definition: TritonService.cc:178
TritonService::Module
Definition: TritonService.h:89
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
TritonService::TritonService
TritonService(const edm::ParameterSet &pset, edm::ActivityRegistry &areg)
Definition: TritonService.cc:55
TritonService::FallbackOpts::wait
int wait
Definition: TritonService.h:49
TritonService::FallbackOpts::useGPU
bool useGPU
Definition: TritonService.h:47
TritonService::Model::path
std::string path
Definition: TritonService.h:85
TritonService::pid
const std::string & pid() const
Definition: TritonService.h:103
TritonService::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: TritonService.cc:288
TritonServerType::LocalGPU
std
Definition: JetResolutionObject.h:76
ConfigurationDescriptions
TritonService::pid_
std::string pid_
Definition: TritonService.h:118
TritonServerType
TritonServerType
Definition: TritonService.h:24
edm::PathsAndConsumesOfModulesBase
Definition: PathsAndConsumesOfModulesBase.h:35
TritonService::Server::Server
Server(const edm::ParameterSet &pset)
Definition: TritonService.h:56
TritonServerType::Remote
TritonService::FallbackOpts
Definition: TritonService.h:29
TritonService::postModuleConstruction
void postModuleConstruction(edm::ModuleDescription const &)
Definition: TritonService.cc:155
TritonService::FallbackOpts::useDocker
bool useDocker
Definition: TritonService.h:46
castor_dqm_sourceclient_file_cfg.path
path
Definition: castor_dqm_sourceclient_file_cfg.py:37
TritonService::FallbackOpts::enable
bool enable
Definition: TritonService.h:43
ParameterSet.h
path_
std::string & path_
Definition: PluginManager.cc:221
TritonService::FallbackOpts::sandboxName
std::string sandboxName
Definition: TritonService.h:53
TritonService::FallbackOpts::tempDir
std::string tempDir
Definition: TritonService.h:51
TritonService::~TritonService
~TritonService()=default
TritonService::FallbackOpts::retries
int retries
Definition: TritonService.h:48
TritonService
Definition: TritonService.h:26
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
TritonService::verbose_
bool verbose_
Definition: TritonService.h:113
TritonService::servers_
std::unordered_map< std::string, Server > servers_
Definition: TritonService.h:121