ATLAS Offline Software
TrigITkModuleCuda.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_TRIGITkMODULECUDA_H
6 #define TRIGINDETCUDA_TRIGITkMODULECUDA_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
TrigITkModuleCuda::m_maxDevice
int m_maxDevice
Definition: TrigITkModuleCuda.h:55
TrigInDetAccelCodes.h
TrigAccel::TrigITkModuleID_CUDA
constexpr unsigned int TrigITkModuleID_CUDA
Definition: TrigInDetAccelCodes.h:13
TrigITkModuleCuda::m_d_detmodel_ptrs
std::map< int, unsigned char * > m_d_detmodel_ptrs
Definition: TrigITkModuleCuda.h:53
TrigITkModuleCuda::checkError
void checkError(int code=0) const
Definition: TrigITkModuleCuda.h:39
TrigITkModuleCuda::m_workItemCounters
std::atomic< unsigned int > m_workItemCounters[100]
Definition: TrigITkModuleCuda.h:67
WorkFactory.h
TrigITkModuleCuda::m_timeLine
tbb::concurrent_vector< WorkTimeStamp > m_timeLine
Definition: TrigITkModuleCuda.h:68
TrigITkModuleCuda::createSeedMakingContext
SeedMakingDeviceContext * createSeedMakingContext(int) const
TrigITkModuleCuda::configure
bool configure()
TrigITkModuleCuda::createManagedSeedMakingContext
SeedMakingManagedDeviceContext * createManagedSeedMakingContext(int) const
calibdata.exit
exit
Definition: calibdata.py:236
pmontree.code
code
Definition: pmontree.py:443
TrigITkModuleCuda
Definition: TrigITkModuleCuda.h:19
TrigAccel::Work
Definition: Work.h:14
TrigITkAccelEDM.h
TrigITkModuleCuda::m_dumpTimeLine
bool m_dumpTimeLine
Definition: TrigITkModuleCuda.h:65
TrigITkModuleCuda::~TrigITkModuleCuda
~TrigITkModuleCuda()
SeedMakingManagedDeviceContext
Definition: device_context.h:45
SeedMakingDeviceContext
Definition: device_context.h:17
TrigITkModuleCuda::createWork
TrigAccel::Work * createWork(int, std::shared_ptr< TrigAccel::OffloadBuffer >)
TrigITkModuleCuda::m_h_detmodel
unsigned char * m_h_detmodel
Definition: TrigITkModuleCuda.h:45
TrigITkModuleCuda::getProvidedAlgs
const std::vector< int > getProvidedAlgs()
TrigAccel::WorkFactory
Definition: WorkFactory.h:16
device_context.h
error
Definition: IImpactPoint3dEstimator.h:70
TrigITkModuleCuda::getFactoryId
virtual int getFactoryId()
Definition: TrigITkModuleCuda.h:33
TrigITkModuleCuda::TrigITkModuleCuda
TrigITkModuleCuda()