ATLAS Offline Software
TrigInDetModuleCuda.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRIGINDETCUDA_TRIGINDETMODULECUDA_H
6 #define TRIGINDETCUDA_TRIGINDETMODULECUDA_H
7 
8 #include <map>
9 #include <atomic>
13 
14 #include "device_context.h"
15 
16 #include "tbb/concurrent_queue.h"
17 #include "tbb/concurrent_vector.h"
18 
20 
21  public:
22 
24 
26 
27  bool configure();
28 
29  TrigAccel::Work* createWork(int, std::shared_ptr<TrigAccel::OffloadBuffer>);
30 
31  const std::vector<int> getProvidedAlgs();
32 
33  virtual int getFactoryId() {
35  }
36 
37  private:
38 
39  inline void checkError(int code = 0) const {
40  cudaError_t error = cudaGetLastError();
41  if(error != cudaSuccess) {
42  printf("%d CUDA error %d: %s\n", getpid(), code, cudaGetErrorString(error));
43  exit(-1);
44  }
45  };
46 
47  //data structures
48 
49  //1. "const" data: managed by the Factory
50 
51  unsigned char* m_h_detmodel;
52 
53  std::map<int, unsigned char*> m_d_detmodel_ptrs;
54 
56 
57  // data context allocation / de-allocation
58 
60 
61 
63 
64 
66 
67  std::atomic<unsigned int> m_workItemCounters[100];//atomic counters for unique Work identification
68  tbb::concurrent_vector<WorkTimeStamp> m_timeLine;
69  };
70 
71 #endif
TrigInDetModuleCuda::getProvidedAlgs
const std::vector< int > getProvidedAlgs()
TrigInDetModuleCuda::m_timeLine
tbb::concurrent_vector< WorkTimeStamp > m_timeLine
Definition: TrigInDetModuleCuda.h:68
TrigInDetAccelCodes.h
TrigInDetModuleCuda
Definition: TrigInDetModuleCuda.h:19
WorkFactory.h
TrigAccel::TrigInDetModuleID_CUDA
constexpr unsigned int TrigInDetModuleID_CUDA
Definition: TrigInDetAccelCodes.h:12
TrigInDetModuleCuda::configure
bool configure()
TrigInDetModuleCuda::m_d_detmodel_ptrs
std::map< int, unsigned char * > m_d_detmodel_ptrs
Definition: TrigInDetModuleCuda.h:53
TrigInDetModuleCuda::m_dumpTimeLine
bool m_dumpTimeLine
Definition: TrigInDetModuleCuda.h:65
TrigInDetModuleCuda::~TrigInDetModuleCuda
~TrigInDetModuleCuda()
TrigInDetModuleCuda::TrigInDetModuleCuda
TrigInDetModuleCuda()
calibdata.exit
exit
Definition: calibdata.py:236
TrigInDetModuleCuda::createSeedMakingContext
SeedMakingDeviceContext * createSeedMakingContext(int) const
pmontree.code
code
Definition: pmontree.py:443
TrigAccel::Work
Definition: Work.h:14
SeedMakingManagedDeviceContext
Definition: device_context.h:45
SeedMakingDeviceContext
Definition: device_context.h:17
TrigInDetModuleCuda::getFactoryId
virtual int getFactoryId()
Definition: TrigInDetModuleCuda.h:33
TrigInDetModuleCuda::m_workItemCounters
std::atomic< unsigned int > m_workItemCounters[100]
Definition: TrigInDetModuleCuda.h:67
TrigAccel::WorkFactory
Definition: WorkFactory.h:16
TrigInDetModuleCuda::m_h_detmodel
unsigned char * m_h_detmodel
Definition: TrigInDetModuleCuda.h:45
device_context.h
error
Definition: IImpactPoint3dEstimator.h:70
TrigInDetModuleCuda::createWork
TrigAccel::Work * createWork(int, std::shared_ptr< TrigAccel::OffloadBuffer >)
TrigInDetAccelEDM.h
TrigInDetModuleCuda::m_maxDevice
int m_maxDevice
Definition: TrigInDetModuleCuda.h:55
TrigInDetModuleCuda::createManagedSeedMakingContext
SeedMakingManagedDeviceContext * createManagedSeedMakingContext(int) const
TrigInDetModuleCuda::checkError
void checkError(int code=0) const
Definition: TrigInDetModuleCuda.h:39