Skip to content

Commit 8b1399d

Browse files
committed
add filldescriptions for clients and producers
1 parent f4fb293 commit 8b1399d

File tree

9 files changed

+114
-0
lines changed

9 files changed

+114
-0
lines changed

Brainwave/interface/TFClientLocal.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,19 @@
1212
#include "tensorflow/core/graph/default_device.h"
1313
#include "tensorflow/core/public/session.h"
1414

15+
//forward declaration
16+
namespace edm {
17+
class ParameterSetDescription;
18+
}
19+
1520
class TFClientLocal : public SonicClientSync<tensorflow::Tensor> {
1621
public:
1722
//constructor
1823
TFClientLocal(const edm::ParameterSet& params);
1924
//destructor
2025
~TFClientLocal();
26+
//for fillDescriptions
27+
static void fillPSetDescription(edm::ParameterSetDescription& iDesc);
2128

2229
protected:
2330
void predictImpl() override;

Brainwave/interface/TFClientRemote.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,17 @@
1212
#include "tensorflow/core/framework/tensor.h"
1313
#include "tensorflow/core/util/command_line_flags.h"
1414

15+
//forward declaration
16+
namespace edm {
17+
class ParameterSetDescription;
18+
}
19+
1520
class TFClientRemote : public SonicClientPseudoAsync<tensorflow::Tensor> {
1621
public:
1722
//constructors (timeout in seconds)
1823
TFClientRemote(const edm::ParameterSet& params);
24+
//for fillDescriptions
25+
static void fillPSetDescription(edm::ParameterSetDescription& iDesc);
1926

2027
protected:
2128
void predictImpl() override;

Brainwave/plugins/JetImageProducer.cc

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
#include "SonicCMS/Brainwave/interface/TFClientLocal.h"
1111
#include "FWCore/Framework/interface/Event.h"
1212
#include "FWCore/ParameterSet/interface/ParameterSet.h"
13+
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
14+
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
1315
#include "FWCore/Framework/interface/EventSetup.h"
1416
#include "FWCore/Framework/interface/ESHandle.h"
1517
#include "FWCore/Framework/interface/Frameworkfwd.h"
@@ -110,6 +112,17 @@ class JetImageProducer : public SonicEDProducer<Client>
110112
findTopN(iOutput);
111113
}
112114

115+
//to ensure distinct cfi names - specialized below
116+
static std::string getCfiName();
117+
static void fillDescriptions(edm::ConfigurationDescriptions & descriptions) {
118+
edm::ParameterSetDescription desc;
119+
Client::fillPSetDescription(desc);
120+
desc.add<edm::InputTag>("JetTag",edm::InputTag("slimmedJetsAK8"));
121+
desc.add<unsigned>("topN",5);
122+
desc.add<std::string>("imageList");
123+
descriptions.add(getCfiName(),desc);
124+
}
125+
113126
private:
114127
void findTopN(const tensorflow::Tensor& scores) const {
115128
auto score_list = scores.flat<float>();
@@ -143,5 +156,8 @@ class JetImageProducer : public SonicEDProducer<Client>
143156
typedef JetImageProducer<TFClientRemote> JetImageProducerRemote;
144157
typedef JetImageProducer<TFClientLocal> JetImageProducerLocal;
145158

159+
template<> std::string JetImageProducerRemote::getCfiName() { return "JetImageProducerRemote"; }
160+
template<> std::string JetImageProducerLocal::getCfiName() { return "JetImageProducerLocal"; }
161+
146162
DEFINE_FWK_MODULE(JetImageProducerRemote);
147163
DEFINE_FWK_MODULE(JetImageProducerLocal);

Brainwave/src/TFClientLocal.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
#include "FWCore/MessageLogger/interface/MessageLogger.h"
2+
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
23
#include "PhysicsTools/TensorFlow/interface/TensorFlow.h"
34
#include "SonicCMS/Brainwave/interface/TFClientLocal.h"
45

56
#include <sstream>
7+
#include <string>
68
#include <chrono>
79

810
#include "tensorflow/core/graph/default_device.h"
@@ -13,6 +15,13 @@ TFClientLocal::TFClientLocal(const edm::ParameterSet& params) : SonicClientSync<
1315
createSessions();
1416
}
1517

18+
void TFClientLocal::fillPSetDescription(edm::ParameterSetDescription& iDesc) {
19+
edm::ParameterSetDescription descClient;
20+
descClient.add<std::string>("featurizer");
21+
descClient.add<std::string>("classifier");
22+
iDesc.add<edm::ParameterSetDescription>("Client",descClient);
23+
}
24+
1625
void TFClientLocal::loadModel(const std::string& featurizer_file, const std::string& classifier_file) {
1726
// load the graph
1827
std::stringstream msg;

Brainwave/src/TFClientRemote.cc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "FWCore/MessageLogger/interface/MessageLogger.h"
2+
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
23
#include "SonicCMS/Brainwave/interface/TFClientRemote.h"
34

45
#include <sstream>
@@ -80,3 +81,13 @@ TFClientRemote::TFClientRemote(const edm::ParameterSet& params) :
8081
timeout_(params.getParameter<unsigned>("timeout")),
8182
inputTensorName_(params.getParameter<std::string>("inputTensorName"))
8283
{ }
84+
85+
void TFClientRemote::fillPSetDescription(edm::ParameterSetDescription& iDesc) {
86+
edm::ParameterSetDescription descClient;
87+
descClient.add<std::string>("address");
88+
descClient.add<unsigned>("port");
89+
descClient.add<unsigned>("timeout");
90+
descClient.add<std::string>("inputTensorName","Placeholder:0");
91+
iDesc.add<edm::ParameterSetDescription>("Client",descClient);
92+
}
93+

Core/README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@ class MyProducer : public SonicEDProducer<Client>
2222
void produce(edm::Event& iEvent, edm::EventSetup const& iSetup, Output const& iOutput) override {
2323
//convert client output to event data format
2424
}
25+
static void fillDescriptions(edm::ConfigurationDescriptions & descriptions) {
26+
edm::ParameterSetDescription desc;
27+
Client::fillPSetDescription(desc);
28+
//add producer-specific parameters
29+
descriptions.add("MyProducer",desc);
30+
}
2531
};
2632

2733
DEFINE_FWK_MODULE(MyProducer);
@@ -37,6 +43,7 @@ process.MyProducer = cms.EDProducer("MyProducer",
3743
)
3844
)
3945
```
46+
These parameters can be prepopulated and validated by the client using `fillDescriptions` (see below).
4047

4148
Example producers can be found in the `plugins` folders of the other packages in this repository.
4249

@@ -60,6 +67,8 @@ class MyClient : public SonicClient*<Input,Output> {
6067
public:
6168
MyClient(const edm::ParameterSet& params);
6269

70+
static void fillPSetDescription(edm::ParameterSetDescription& iDesc);
71+
6372
protected:
6473
void predictImpl() override;
6574
};
@@ -77,4 +86,13 @@ The generic `SonicClient*` should be replaced with one of the available modes:
7786
In addition, as indicated, the input and output data types must be specified.
7887
(If both types are the same, only the input type needs to be specified.)
7988

89+
The client can also provide a static method `fillPSetDescription` to populate its parameters in the `fillDescriptions` for the producers that use the client:
90+
```cpp
91+
void MyClient::fillPSetDescription(edm::ParameterSetDescription& iDesc) {
92+
edm::ParameterSetDescription descClient;
93+
//add parameters
94+
iDesc.add<edm::ParameterSetDescription>("Client",descClient);
95+
}
96+
```
97+
8098
Example client code can be found in the `interface` and `src` directories of the other packages in this repository.

TensorRT/interface/TRTClient.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#define SonicCMS_TensorRT_TRTClient
33

44
#include "FWCore/ParameterSet/interface/ParameterSet.h"
5+
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
56
#include "SonicCMS/Core/interface/SonicClientSync.h"
67
#include "SonicCMS/Core/interface/SonicClientPseudoAsync.h"
78
#include "SonicCMS/Core/interface/SonicClientAsync.h"
@@ -27,6 +28,19 @@ class TRTClient : public Client {
2728
unsigned noutput() const { return noutput_; }
2829
unsigned batchSize() const { return batchSize_; }
2930

31+
//for fillDescriptions
32+
static void fillPSetDescription(edm::ParameterSetDescription& iDesc) {
33+
edm::ParameterSetDescription descClient;
34+
descClient.add<unsigned>("ninput");
35+
descClient.add<unsigned>("noutput");
36+
descClient.add<unsigned>("batchSize");
37+
descClient.add<std::string>("address");
38+
descClient.add<unsigned>("port");
39+
descClient.add<unsigned>("timeout");
40+
descClient.add<std::string>("modelName");
41+
iDesc.add<edm::ParameterSetDescription>("Client",descClient);
42+
}
43+
3044
protected:
3145
void predictImpl() override;
3246

TensorRT/plugins/HcalProducer.cc

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
#include "SonicCMS/TensorRT/interface/TRTClient.h"
88
#include "FWCore/Framework/interface/Event.h"
99
#include "FWCore/ParameterSet/interface/ParameterSet.h"
10+
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
11+
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
1012
#include "FWCore/Framework/interface/EventSetup.h"
1113
#include "FWCore/Framework/interface/Frameworkfwd.h"
1214
#include "FWCore/Framework/interface/MakerMacros.h"
@@ -46,6 +48,15 @@ class HcalProducer : public SonicEDProducer<Client>
4648
}
4749
~HcalProducer() override {}
4850

51+
//to ensure distinct cfi names - specialized below
52+
static std::string getCfiName();
53+
static void fillDescriptions(edm::ConfigurationDescriptions & descriptions) {
54+
edm::ParameterSetDescription desc;
55+
Client::fillPSetDescription(desc);
56+
desc.add<unsigned>("topN",5);
57+
descriptions.add(getCfiName(),desc);
58+
}
59+
4960
private:
5061
using SonicEDProducer<Client>::client_;
5162
//Just putting something in for the hell of it
@@ -78,6 +89,10 @@ typedef HcalProducer<TRTClientSync> HcalProducerSync;
7889
typedef HcalProducer<TRTClientAsync> HcalProducerAsync;
7990
typedef HcalProducer<TRTClientPseudoAsync> HcalProducerPseudoAsync;
8091

92+
template<> std::string HcalProducerSync::getCfiName() { return "HcalProducerSync"; }
93+
template<> std::string HcalProducerAsync::getCfiName() { return "HcalProducerAsync"; }
94+
template<> std::string HcalProducerPseudoAsync::getCfiName() { return "HcalProducerPseudoAsync"; }
95+
8196
DEFINE_FWK_MODULE(HcalProducerSync);
8297
DEFINE_FWK_MODULE(HcalProducerAsync);
8398
DEFINE_FWK_MODULE(HcalProducerPseudoAsync);

TensorRT/plugins/JetImageProducer.cc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
#include "SonicCMS/TensorRT/interface/TRTClient.h"
1010
#include "FWCore/Framework/interface/Event.h"
1111
#include "FWCore/ParameterSet/interface/ParameterSet.h"
12+
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
13+
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
1214
#include "FWCore/Framework/interface/EventSetup.h"
1315
#include "FWCore/Framework/interface/ESHandle.h"
1416
#include "FWCore/Framework/interface/Frameworkfwd.h"
@@ -103,6 +105,17 @@ class JetImageProducer : public SonicEDProducer<Client>
103105
}
104106
~JetImageProducer() override {}
105107

108+
//to ensure distinct cfi names - specialized below
109+
static std::string getCfiName();
110+
static void fillDescriptions(edm::ConfigurationDescriptions & descriptions) {
111+
edm::ParameterSetDescription desc;
112+
Client::fillPSetDescription(desc);
113+
desc.add<edm::InputTag>("JetTag",edm::InputTag("slimmedJetsAK8"));
114+
desc.add<unsigned>("topN",5);
115+
desc.add<std::string>("imageList");
116+
descriptions.add(getCfiName(),desc);
117+
}
118+
106119
private:
107120
using SonicEDProducer<Client>::client_;
108121
void findTopN(const std::vector<float>& scores, unsigned n=5) const {
@@ -138,6 +151,10 @@ typedef JetImageProducer<TRTClientSync> JetImageProducerSync;
138151
typedef JetImageProducer<TRTClientAsync> JetImageProducerAsync;
139152
typedef JetImageProducer<TRTClientPseudoAsync> JetImageProducerPseudoAsync;
140153

154+
template<> std::string JetImageProducerSync::getCfiName() { return "JetImageProducerSync"; }
155+
template<> std::string JetImageProducerAsync::getCfiName() { return "JetImageProducerAsync"; }
156+
template<> std::string JetImageProducerPseudoAsync::getCfiName() { return "JetImageProducerPseudoAsync"; }
157+
141158
DEFINE_FWK_MODULE(JetImageProducerSync);
142159
DEFINE_FWK_MODULE(JetImageProducerAsync);
143160
DEFINE_FWK_MODULE(JetImageProducerPseudoAsync);

0 commit comments

Comments
 (0)