|
23 | 23 | #include <iosfwd> |
24 | 24 | #include <vector> |
25 | 25 | #include <unordered_map> |
| 26 | +#include <unordered_set> |
26 | 27 |
|
27 | 28 | #include "GPUTRDDef.h" |
28 | 29 | #include "GPUParam.h" |
@@ -184,8 +185,8 @@ class GPUReconstruction |
184 | 185 | virtual int RunChains() = 0; |
185 | 186 | unsigned int getNEventsProcessed() { return mNEventsProcessed; } |
186 | 187 | unsigned int getNEventsProcessedInStat() { return mStatNEvents; } |
187 | | - virtual int registerMemoryForGPU(const void* ptr, size_t size) = 0; |
188 | | - virtual int unregisterMemoryForGPU(const void* ptr) = 0; |
| 188 | + int registerMemoryForGPU(const void* ptr, size_t size); |
| 189 | + int unregisterMemoryForGPU(const void* ptr); |
189 | 190 | virtual void* getGPUPointer(void* ptr) { return ptr; } |
190 | 191 | virtual void startGPUProfiling() {} |
191 | 192 | virtual void endGPUProfiling() {} |
@@ -288,6 +289,9 @@ class GPUReconstruction |
288 | 289 | int EnqueuePipeline(bool terminate = false); |
289 | 290 | GPUChain* GetNextChainInQueue(); |
290 | 291 |
|
| 292 | + virtual int registerMemoryForGPU_internal(const void* ptr, size_t size) = 0; |
| 293 | + virtual int unregisterMemoryForGPU_internal(const void* ptr) = 0; |
| 294 | + |
291 | 295 | // Management for GPU thread contexts |
292 | 296 | class GPUThreadContext |
293 | 297 | { |
@@ -364,6 +368,8 @@ class GPUReconstruction |
364 | 368 | void* mVolatileMemoryStart = nullptr; // Ptr to beginning of temporary volatile memory allocation, nullptr if uninitialized |
365 | 369 | size_t mDeviceMemoryUsedMax = 0; // |
366 | 370 |
|
| 371 | + std::unordered_set<const void*> mRegisteredMemoryPtrs; // List of pointers registered for GPU |
| 372 | + |
367 | 373 | GPUReconstruction* mMaster = nullptr; // Ptr to a GPUReconstruction object serving as master, sharing GPU memory, events, etc. |
368 | 374 | std::vector<GPUReconstruction*> mSlaves; // Ptr to slave GPUReconstructions |
369 | 375 |
|
|
0 commit comments