Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion GPU/GPUTracking/Base/GPUReconstructionCPU.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,6 @@ class GPUReconstructionCPU : public GPUReconstructionKernels<GPUReconstructionCP
int32_t ExitDevice() override;
int32_t GetThread();

virtual int32_t PrepareTextures() { return 0; }
virtual int32_t DoStuckProtection(int32_t stream, deviceEvent event) { return 0; }

// Pointers to tracker classes
Expand Down
18 changes: 0 additions & 18 deletions GPU/GPUTracking/Base/cuda/GPUReconstructionCUDA.cu
Original file line number Diff line number Diff line change
Expand Up @@ -254,12 +254,6 @@ int32_t GPUReconstructionCUDA::InitDevice_Runtime()
return (1);
}

#ifdef GPUCA_USE_TEXTURES
if (GPUCA_SECTOR_DATA_MEMORY * NSECTORS > (size_t)deviceProp.maxTexture1DLinear) {
GPUError("Invalid maximum texture size of device: %ld < %ld\n", (int64_t)deviceProp.maxTexture1DLinear, (int64_t)(GPUCA_SECTOR_DATA_MEMORY * NSECTORS));
return (1);
}
#endif
#ifndef GPUCA_NO_CONSTANT_MEMORY
if (gGPUConstantMemBufferSize > deviceProp.totalConstMem) {
GPUError("Insufficient constant memory available on GPU %d < %d!", (int32_t)deviceProp.totalConstMem, (int32_t)gGPUConstantMemBufferSize);
Expand Down Expand Up @@ -627,18 +621,6 @@ void GPUReconstructionCUDA::loadKernelModules(bool perKernel)
}

#ifndef __HIPCC__ // CUDA
int32_t GPUReconstructionCUDA::PrepareTextures()
{
#ifdef GPUCA_USE_TEXTURES
cudaChannelFormatDesc channelDescu2 = cudaCreateChannelDesc<cahit2>();
size_t offset;
GPUChkErr(cudaBindTexture(&offset, &gAliTexRefu2, mProcessorsShadow->tpcTrackers[0].Data().Memory(), &channelDescu2, NSECTORS * GPUCA_SECTOR_DATA_MEMORY));
cudaChannelFormatDesc channelDescu = cudaCreateChannelDesc<calink>();
GPUChkErr(cudaBindTexture(&offset, &gAliTexRefu, mProcessorsShadow->tpcTrackers[0].Data().Memory(), &channelDescu, NSECTORS * GPUCA_SECTOR_DATA_MEMORY));
#endif
return (0);
}

void GPUReconstructionCUDA::startGPUProfiling()
{
GPUChkErr(cudaProfilerStart());
Expand Down
1 change: 0 additions & 1 deletion GPU/GPUTracking/Base/cuda/GPUReconstructionCUDA.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ class GPUReconstructionCUDA : public GPUReconstructionKernels<GPUReconstructionC

#ifndef __HIPCC__ // CUDA
bool CanQueryMaxMemory() override { return true; }
int32_t PrepareTextures() override;
void startGPUProfiling() override;
void endGPUProfiling() override;
#else // HIP
Expand Down
5 changes: 0 additions & 5 deletions GPU/GPUTracking/Base/cuda/GPUReconstructionCUDAKernels.cu
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,6 @@

using namespace o2::gpu;

#ifdef GPUCA_USE_TEXTURES
texture<cahit2, cudaTextureType1D, cudaReadModeElementType> gAliTexRefu2;
texture<calink, cudaTextureType1D, cudaReadModeElementType> gAliTexRefu;
#endif

#include "GPUReconstructionIncludesDeviceAll.h"

#if defined(__HIPCC__) && defined(GPUCA_HAS_GLOBAL_SYMBOL_CONSTANT_MEM)
Expand Down
2 changes: 0 additions & 2 deletions GPU/GPUTracking/Base/opencl/GPUReconstructionOCL.cl
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,6 @@ typedef signed char int8_t;
#include "GPUConstantMem.h"
#include "GPUReconstructionIncludesDeviceAll.h"

// if (gpu_mem != pTracker.GPUParametersConst()->gpumem) return; //TODO!

#define GPUCA_KRNL(...) GPUCA_KRNLGPU(__VA_ARGS__)
#define GPUCA_CONSMEM_PTR GPUglobal() char *gpu_mem, GPUconstant() GPUConstantMem* pConstant,
#define GPUCA_CONSMEM (*pConstant)
Expand Down
6 changes: 0 additions & 6 deletions GPU/GPUTracking/Definitions/GPUDef.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,6 @@
#define CA_SHARED_CACHE_REF(target, src, size, reftype, ref) GPUglobalref() const reftype* __restrict__ ref = src
#endif

#ifdef GPUCA_TEXTURE_FETCH_CONSTRUCTOR
#define CA_TEXTURE_FETCH(type, texture, address, entry) tex1Dfetch(texture, ((char*) address - tracker.Data().GPUTextureBase()) / sizeof(type) + entry);
#else
#define CA_TEXTURE_FETCH(type, texture, address, entry) address[entry];
#endif

#endif //GPUTPCDEF_H

#ifdef GPUCA_CADEBUG
Expand Down
1 change: 0 additions & 1 deletion GPU/GPUTracking/Definitions/GPUDefParametersDefaults.h
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,6 @@
#define GPUCA_PAR_COMP_GATHER_MODE 3
#define GPUCA_PAR_DEDX_STORAGE_TYPE uint16_t
#define GPUCA_PAR_MERGER_INTERPOLATION_ERROR_TYPE half
// #define GPUCA_USE_TEXTURES
#elif defined(GPUCA_GPUTYPE_OPENCL)
#else
#error GPU TYPE NOT SET
Expand Down
5 changes: 0 additions & 5 deletions GPU/GPUTracking/Definitions/GPUDefParametersWrapper.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,6 @@ namespace o2::gpu

// #define GPUCA_KERNEL_DEBUGGER_OUTPUT

// Derived parameters
#ifdef GPUCA_USE_TEXTURES
#define GPUCA_TEXTURE_FETCH_CONSTRUCTOR // Fetch data through texture cache
#endif

} // namespace o2::gpu

// clang-format on
Expand Down
1 change: 0 additions & 1 deletion GPU/GPUTracking/Global/GPUChain.h
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,6 @@ class GPUChain

inline GPUChain* GetNextChainInQueue() { return mRec->GetNextChainInQueue(); }

virtual int32_t PrepareTextures() { return 0; }
virtual int32_t DoStuckProtection(int32_t stream, deviceEvent event) { return 0; }

template <class T, class S, typename... Args>
Expand Down
11 changes: 0 additions & 11 deletions GPU/GPUTracking/Global/GPUChainTrackingSectorTracker.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -103,17 +103,6 @@ int32_t GPUChainTracking::RunTPCTrackingSectors_internal()
int32_t streamInitAndOccMap = mRec->NStreams() - 1;

if (doGPU) {
for (uint32_t iSector = 0; iSector < NSECTORS; iSector++) {
processorsShadow()->tpcTrackers[iSector].GPUParametersConst()->gpumem = (char*)mRec->DeviceMemoryBase();
// Initialize Startup Constants
processors()->tpcTrackers[iSector].GPUParameters()->nextStartHit = (((getKernelProperties<GPUTPCTrackletConstructor>().minBlocks * BlockCount()) + NSECTORS - 1 - iSector) / NSECTORS) * getKernelProperties<GPUTPCTrackletConstructor>().nThreads;
processorsShadow()->tpcTrackers[iSector].SetGPUTextureBase(mRec->DeviceMemoryBase());
}

if (PrepareTextures()) {
return (2);
}

// Copy Tracker Object to GPU Memory
if (GetProcessingSettings().debugLevel >= 3) {
GPUInfo("Copying Tracker objects to GPU");
Expand Down
8 changes: 3 additions & 5 deletions GPU/GPUTracking/Merger/GPUTPCGMTrackParam.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -580,10 +580,8 @@ GPUd() float GPUTPCGMTrackParam::AttachClusters(const GPUTPCGMMerger* GPUrestric
}
const GPUTPCTracker& GPUrestrict() tracker = *(Merger -> GetConstantMem()->tpcTrackers + sector);
const GPUTPCRow& GPUrestrict() row = tracker.Row(iRow);
#ifndef GPUCA_TEXTURE_FETCH_CONSTRUCTOR
GPUglobalref() const cahit2* hits = tracker.HitData(row);
GPUglobalref() const calink* firsthit = tracker.FirstHitInBin(row);
#endif //! GPUCA_TEXTURE_FETCH_CONSTRUCTOR
if (row.NHits() == 0) {
return -1e6f;
}
Expand Down Expand Up @@ -626,8 +624,8 @@ GPUd() float GPUTPCGMTrackParam::AttachClusters(const GPUTPCGMMerger* GPUrestric
}
for (int32_t k = 0; k <= nz; k++) {
const int32_t mybin = bin + k * nBinsY;
const uint32_t hitFst = CA_TEXTURE_FETCH(calink, gAliTexRefu, firsthit, mybin);
const uint32_t hitLst = CA_TEXTURE_FETCH(calink, gAliTexRefu, firsthit, mybin + ny + 1);
const uint32_t hitFst = firsthit[mybin];
const uint32_t hitLst = firsthit[mybin + ny + 1];
for (uint32_t ih = hitFst; ih < hitLst; ih++) {
int32_t id = idOffset + ids[ih];
GPUAtomic(uint32_t)* const weight = weights + id;
Expand All @@ -636,7 +634,7 @@ GPUd() float GPUTPCGMTrackParam::AttachClusters(const GPUTPCGMMerger* GPUrestric
continue;
}
}
const cahit2 hh = CA_TEXTURE_FETCH(cahit2, gAliTexRefu2, hits, ih);
const cahit2 hh = hits[ih];
const float y = y0 + hh.x * stepY;
const float z = z0 + hh.y * stepZ;
const float dy = y - uncorrectedY;
Expand Down
33 changes: 7 additions & 26 deletions GPU/GPUTracking/SectorTracker/GPUTPCTracker.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,24 +59,14 @@ class GPUTPCTracker : public GPUProcessor
void DumpTrackletHits(std::ostream& out); // Same for Track Hits
#endif

struct StructGPUParameters {
GPUAtomic(uint32_t) nextStartHit; // Next Tracklet to process
};

struct StructGPUParametersConst {
GPUglobalref() char* gpumem; // Base pointer to GPU memory (Needed for OpenCL for verification)
};

struct commonMemoryStruct {
commonMemoryStruct() : nStartHits(0), nTracklets(0), nRowHits(0), nTracks(0), nLocalTracks(0), nTrackHits(0), nLocalTrackHits(0), gpuParameters() {}
GPUAtomic(uint32_t) nStartHits; // number of start hits
GPUAtomic(uint32_t) nTracklets; // number of tracklets
GPUAtomic(uint32_t) nRowHits; // number of tracklet hits
GPUAtomic(uint32_t) nTracks; // number of reconstructed tracks
int32_t nLocalTracks; // number of reconstructed tracks before extrapolation tracking
GPUAtomic(uint32_t) nTrackHits; // number of track hits
int32_t nLocalTrackHits; // see above
StructGPUParameters gpuParameters; // GPU parameters
GPUAtomic(uint32_t) nStartHits = 0; // number of start hits
GPUAtomic(uint32_t) nTracklets = 0; // number of tracklets
GPUAtomic(uint32_t) nRowHits = 0; // number of tracklet hits
GPUAtomic(uint32_t) nTracks = 0; // number of reconstructed tracks
int32_t nLocalTracks = 0; // number of reconstructed tracks before extrapolation tracking
GPUAtomic(uint32_t) nTrackHits = 0; // number of track hits
int32_t nLocalTrackHits = 0; // see above
};

GPUhdi() GPUglobalref() const GPUTPCClusterData* ClusterData() const
Expand Down Expand Up @@ -205,13 +195,6 @@ class GPUTPCTracker : public GPUProcessor

GPUhd() GPUglobalref() GPUTPCRow* TrackingDataRows() const { return (mData.Rows()); }
GPUhd() GPUglobalref() int32_t* RowStartHitCountOffset() const { return (mRowStartHitCountOffset); }
GPUhd() GPUglobalref() StructGPUParameters* GPUParameters() const { return (&mCommonMem->gpuParameters); }
GPUhd() StructGPUParametersConst* GPUParametersConst()
{
return (&mGPUParametersConst);
}
GPUhd() const StructGPUParametersConst* GetGPUParametersConst() const { return (&mGPUParametersConst); }
GPUhd() void SetGPUTextureBase(GPUglobalref() const void* val) { mData.SetGPUTextureBase(val); }

struct trackSortData {
int32_t fTtrack; // Track ID
Expand Down Expand Up @@ -253,8 +236,6 @@ class GPUTPCTracker : public GPUProcessor
GPUglobalref() GPUTPCHitId* mTrackletTmpStartHits = nullptr; // Unsorted start hits
GPUglobalref() char* mGPUTrackletTemp = nullptr; // Temp Memory for GPU Tracklet Constructor

StructGPUParametersConst mGPUParametersConst; // Parameters for GPU if this is a GPU tracker

// event
GPUglobalref() commonMemoryStruct* mCommonMem = nullptr; // common event memory
GPUglobalref() GPUTPCHitId* mTrackletStartHits = nullptr; // start hits for the tracklets
Expand Down
8 changes: 1 addition & 7 deletions GPU/GPUTracking/SectorTracker/GPUTPCTrackingData.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class GPUTPCHit;
class GPUTPCTrackingData
{
public:
GPUTPCTrackingData() : mNumberOfHits(0), mNumberOfHitsPlusAlign(0), mClusterIdOffset(0), mGPUTextureBase(nullptr), mRows(nullptr), mLinkUpData(nullptr), mLinkDownData(nullptr), mClusterData(nullptr) {}
GPUTPCTrackingData() : mNumberOfHits(0), mNumberOfHitsPlusAlign(0), mClusterIdOffset(0), mRows(nullptr), mLinkUpData(nullptr), mLinkDownData(nullptr), mClusterData(nullptr) {}

#ifndef GPUCA_GPUCODE_DEVICE
~GPUTPCTrackingData() = default;
Expand Down Expand Up @@ -112,10 +112,6 @@ class GPUTPCTrackingData

GPUhdi() GPUglobalref() GPUAtomic(uint32_t) * HitWeights() { return (mHitWeights); }

GPUhdi() void SetGPUTextureBase(GPUglobalref() const void* val) { mGPUTextureBase = val; }
GPUhdi() char* GPUTextureBase() const { return ((char*)mGPUTextureBase); }
GPUhdi() char* GPUTextureBaseConst() const { return ((char*)mGPUTextureBase); }

GPUhdi() GPUglobalref() const GPUTPCClusterData* ClusterData() const { return mClusterData; }

private:
Expand All @@ -135,8 +131,6 @@ class GPUTPCTrackingData
int32_t mNumberOfHitsPlusAlign;
int32_t mClusterIdOffset;

GPUglobalref() const void* mGPUTextureBase; // pointer to start of GPU texture

GPUglobalref() GPUTPCRow* mRows; // The row objects needed for most accessor functions

GPUglobalref() calink* mLinkUpData; // hit index in the row above which is linked to the given (global) hit index
Expand Down
18 changes: 8 additions & 10 deletions GPU/GPUTracking/SectorTracker/GPUTPCTrackletConstructor.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -123,10 +123,10 @@ GPUdic(2, 1) void GPUTPCTrackletConstructor::UpdateTracklet(int32_t /*nBlocks*/,
break; // SG!!! - jump over the row
}

cahit2 hh = CA_TEXTURE_FETCH(cahit22, gAliTexRefu2, tracker.HitData(row), r.mCurrIH);
cahit2 hh = tracker.HitData(row)[r.mCurrIH];

int32_t seedIH = r.mCurrIH;
r.mCurrIH = CA_TEXTURE_FETCH(calink, gAliTexRefs, tracker.HitLinkUpData(row), r.mCurrIH);
r.mCurrIH = tracker.HitLinkUpData(row)[r.mCurrIH];

float x = row.X();
float y = y0 + hh.x * stepY;
Expand Down Expand Up @@ -282,10 +282,8 @@ GPUdic(2, 1) void GPUTPCTrackletConstructor::UpdateTracklet(int32_t /*nBlocks*/,
break;
}

#ifndef GPUCA_TEXTURE_FETCH_CONSTRUCTOR
GPUglobalref() const cahit2* hits = tracker.HitData(row);
GPUglobalref() const calink* firsthit = tracker.FirstHitInBin(row);
#endif //! GPUCA_TEXTURE_FETCH_CONSTRUCTOR
tracker.GetConstantMem()->calibObjects.fastTransformHelper->InverseTransformYZtoNominalYZ(tracker.ISector(), iRow, yUncorrected, zUncorrected, yUncorrected, zUncorrected);

if (tracker.Param().rec.tpc.rejectEdgeClustersInSeeding && tracker.Param().rejectEdgeClusterByY(yUncorrected, iRow, CAMath::Sqrt(tParam.Err2Y()))) {
Expand Down Expand Up @@ -318,14 +316,14 @@ GPUdic(2, 1) void GPUTPCTrackletConstructor::UpdateTracklet(int32_t /*nBlocks*/,
#endif
int32_t nBinsY = row.Grid().Ny();
int32_t mybin = bin + k * nBinsY;
uint32_t hitFst = CA_TEXTURE_FETCH(calink, gAliTexRefu, firsthit, mybin);
uint32_t hitLst = CA_TEXTURE_FETCH(calink, gAliTexRefu, firsthit, mybin + ny + 1);
uint32_t hitFst = firsthit[mybin];
uint32_t hitLst = firsthit[mybin + ny + 1];
#ifdef __HIPCC__ // Todo: fixme!
for (uint32_t ih = hitFst - 1; ++ih < hitLst; /*ih++*/) {
#else
for (uint32_t ih = hitFst; ih < hitLst; ih++) {
#endif
cahit2 hh = CA_TEXTURE_FETCH(cahit2, gAliTexRefu2, hits, ih);
cahit2 hh = hits[ih];
float y = y0 + hh.x * stepY;
float z = z0 + hh.y * stepZ;
float dy = y - yUncorrected;
Expand Down Expand Up @@ -353,7 +351,7 @@ GPUdic(2, 1) void GPUTPCTrackletConstructor::UpdateTracklet(int32_t /*nBlocks*/,
}
}

cahit2 hh = CA_TEXTURE_FETCH(cahit2, gAliTexRefu2, hits, best);
cahit2 hh = hits[best];
float y = y0 + hh.x * stepY + tParam.GetY() - yUncorrected;
float z = z0 + hh.y * stepZ + tParam.GetZ() - zUncorrected;

Expand Down Expand Up @@ -390,8 +388,8 @@ GPUdic(2, 1) void GPUTPCTrackletConstructor::UpdateTracklet(int32_t /*nBlocks*/,
const GPUglobalref() GPUTPCRow& GPUrestrict() row2 = tracker.Row(r.mLastRow);
GPUglobalref() const cahit2* hits1 = tracker.HitData(row1);
GPUglobalref() const cahit2* hits2 = tracker.HitData(row2);
const cahit2 hh1 = CA_TEXTURE_FETCH(cahit2, gAliTexRefu2, hits1, rowHits[r.mFirstRow]);
const cahit2 hh2 = CA_TEXTURE_FETCH(cahit2, gAliTexRefu2, hits2, rowHits[r.mLastRow]);
const cahit2 hh1 = hits1[rowHits[r.mFirstRow]];
const cahit2 hh2 = hits2[rowHits[r.mLastRow]];
const float z1 = row1.Grid().ZMin() + hh1.y * row1.HstepZ();
const float z2 = row2.Grid().ZMin() + hh2.y * row2.HstepZ();
float oldOffset = tParam.ZOffset();
Expand Down
3 changes: 0 additions & 3 deletions GPU/GPUTracking/SectorTracker/GPUTPCTrackletConstructor.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,6 @@ class GPUTPCTrackletConstructor : public GPUKernelTemplate

struct GPUSharedMemory {
CA_SHARED_STORAGE(GPUTPCRow mRows[GPUCA_ROW_COUNT]); // rows
int32_t mNextStartHitFirst; // First start hit to be processed by CUDA block during next iteration
int32_t mNextStartHitCount; // Number of start hits to be processed by CUDA block during next iteration
int32_t mNextStartHitFirstRun; // First run for dynamic scheduler?
int32_t mNStartHits; // Total number of start hits

#ifdef GPUCA_TRACKLET_CONSTRUCTOR_DO_PROFILE
Expand Down