CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
tensorflow::TBBSessionFactory Class Reference
Inheritance diagram for tensorflow::TBBSessionFactory:

Public Member Functions

bool AcceptsOptions (const SessionOptions &options) override
 
void Deregister (const TBBSession *session)
 
SessionNewSession (const SessionOptions &options) override
 
Status Reset (const SessionOptions &options, const std::vector< string > &containers) override
 
 TBBSessionFactory ()
 

Private Member Functions

std::vector< TBBSession * > sessions_ GUARDED_BY (sessions_lock_)
 

Private Attributes

mutex sessions_lock_
 

Detailed Description

Definition at line 110 of file TBBSession.cc.

Constructor & Destructor Documentation

tensorflow::TBBSessionFactory::TBBSessionFactory ( )
inline

Definition at line 112 of file TBBSession.cc.

Referenced by tensorflow::TBBSessionRegistrar::TBBSessionRegistrar().

112 {}

Member Function Documentation

bool tensorflow::TBBSessionFactory::AcceptsOptions ( const SessionOptions &  options)
inlineoverride

Definition at line 114 of file TBBSession.cc.

114  {
115  return options.target == "tbb";
116  }
void tensorflow::TBBSessionFactory::Deregister ( const TBBSession session)
inline

Definition at line 162 of file TBBSession.cc.

References checklumidiff::l, MatrixUtil::remove(), dataDML::session, and sessions_lock_.

Referenced by tensorflow::TBBSession::Close().

162  {
163  mutex_lock l(sessions_lock_);
164  sessions_.erase(std::remove(sessions_.begin(), sessions_.end(), session),
165  sessions_.end());
166  }
def remove(d, key, TELL=False)
Definition: MatrixUtil.py:209
std::vector<TBBSession*> sessions_ tensorflow::TBBSessionFactory::GUARDED_BY ( sessions_lock_  )
private
Session* tensorflow::TBBSessionFactory::NewSession ( const SessionOptions &  options)
inlineoverride

Definition at line 118 of file TBBSession.cc.

References dqm::qstatus::ERROR, checklumidiff::l, LOG, alignCSCRings::s, dataDML::session, sessions_lock_, and btagGenBb_cfi::Status.

118  {
119  // Must do this before the CPU allocator is created.
120  if (options.config.graph_options().build_cost_model() > 0) {
121  EnableCPUAllocatorFullStats(true);
122  }
123  std::vector<Device*> devices;
124  Status s = DeviceFactory::AddDevices(
125  options, "/job:localhost/replica:0/task:0", &devices);
126  if (!s.ok()) {
127  LOG(ERROR) << s;
128  return nullptr;
129  }
130 
131  TBBSession* session =
132  new TBBSession(options, new DeviceMgr(devices), this);
133  {
134  mutex_lock l(sessions_lock_);
135  sessions_.push_back(session);
136  }
137  return session;
138  }
#define LOG(A)
static const int ERROR
Status tensorflow::TBBSessionFactory::Reset ( const SessionOptions &  options,
const std::vector< string > &  containers 
)
inlineoverride

Definition at line 140 of file TBBSession.cc.

References checklumidiff::l, alignCSCRings::s, dataDML::session, sessions_lock_, btagGenBb_cfi::Status, and std::swap().

141  {
142  std::vector<TBBSession*> sessions_to_reset;
143  {
144  mutex_lock l(sessions_lock_);
145  // We create a copy to ensure that we don't have a deadlock when
146  // session->Close calls the TBBSessionFactory.Deregister, which
147  // acquires sessions_lock_.
148  std::swap(sessions_to_reset, sessions_);
149  }
150  Status s;
151  for (auto session : sessions_to_reset) {
152  s.Update(session->Reset(containers));
153  }
154  // TODO(suharshs): Change the Reset behavior of all SessionFactories so that
155  // it doesn't close the sessions?
156  for (auto session : sessions_to_reset) {
157  s.Update(session->Close());
158  }
159  return s;
160  }
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)

Member Data Documentation

mutex tensorflow::TBBSessionFactory::sessions_lock_
private

Definition at line 169 of file TBBSession.cc.

Referenced by Deregister(), NewSession(), and Reset().