17#include "GPUDefParametersLoad.inc"
18#include "GPUReconstructionKernelIncludes.h"
54 nThreads = std::max(1, nThreads);
73 if (nThreadsAdjusted > 1) {
74 tbb::task_arena(nThreadsAdjusted).execute([&] {
75 tbb::parallel_for<uint32_t>(0, nThreads, lambda, tbb::simple_partitioner());
78 for (uint32_t
i = 0;
i < nThreads;
i++) {
97std::atomic_flag GPUReconstructionProcessing::mTimerFlag = ATOMIC_FLAG_INIT;
101 while (mTimerFlag.test_and_set()) {
121 timerMeta*
retVal =
nullptr;
122 while (mTimerFlag.test_and_set()) {
132uint32_t GPUReconstructionProcessing::getNextTimerId()
134 static std::atomic<uint32_t>
id{0};
135 return id.fetch_add(1);
140 return std::make_unique<threadContext>();
147#define GPUCA_KRNL(x_class, ...) GPUCA_M_STR(GPUCA_M_KRNL_NAME(x_class)),
148#include "GPUReconstructionKernelList.h"
152#define GPUCA_KRNL(x_class, x_attributes, x_arguments, x_forward, x_types, x_num) \
154 uint32_t GPUReconstructionProcessing::GetKernelNum<GPUCA_M_KRNL_TEMPLATE(x_class)>() \
159 const char* GPUReconstructionProcessing::GetKernelName<GPUCA_M_KRNL_TEMPLATE(x_class)>() \
161 return GPUCA_M_STR(GPUCA_M_KRNL_NAME(x_class)); \
163#include "GPUReconstructionKernelList.h"
void runParallelOuterLoop(bool doGPU, uint32_t nThreads, std::function< void(uint32_t)> lambda)
int32_t mActiveHostKernelThreads
std::vector< std::unique_ptr< timerMeta > > mTimers
void SetNActiveThreads(int32_t n)
GPUDefParameters * mParCPU
int32_t getNKernelHostThreads(bool splitCores)
static const std::vector< std::string > mKernelNames
uint32_t mNActiveThreadsOuterLoop
GPUReconstructionProcessing(const GPUSettingsDeviceBackend &cfg)
virtual std::unique_ptr< threadContext > GetThreadContext() override
GPUDefParameters * mParDevice
uint32_t SetAndGetNActiveThreadsOuterLoop(bool condition, uint32_t max)
~GPUReconstructionProcessing() override
GPUReconstruction * mMaster
static int32_t getHostThreadIndex()
const GPUSettingsProcessing & GetProcessingSettings() const
std::shared_ptr< GPUReconstructionThreading > mThreading
GLuint const GLchar * name
GLint GLint GLsizei GLint GLenum GLenum type
std::string to_string(gsl::span< T, Size > span)