@@ -342,7 +342,7 @@ void TimeFrameGPU<nLayers>::allocMemAsync(void** ptr, size_t size, Stream* strPt
342342 if (extAllocator) {
343343 *ptr = mAllocator ->allocate (size);
344344 } else {
345- LOGP (debug , " Calling default CUDA allocator" );
345+ LOGP (info , " Calling default CUDA allocator" );
346346 checkGPUError (cudaMallocAsync (reinterpret_cast <void **>(ptr), size, strPtr->get ()));
347347 }
348348}
@@ -373,17 +373,10 @@ void TimeFrameGPU<nLayers>::registerHostMemory(const int maxLayers)
373373template <int nLayers>
374374void TimeFrameGPU<nLayers>::unregisterHostMemory(const int maxLayers)
375375{
376- if (!mHostRegistered ) {
377- return ;
378- }
379- for (auto iLayer{0 }; iLayer < maxLayers; ++iLayer) {
380- checkGPUError (cudaHostUnregister (mClusters [iLayer].data ()));
381- checkGPUError (cudaHostUnregister (mNClustersPerROF [iLayer].data ()));
382- checkGPUError (cudaHostUnregister (mIndexTables [iLayer].data ()));
376+ for (auto iLayer{0 }; iLayer < nLayers; ++iLayer) {
377+ checkGPUError (cudaHostUnregister (mTrackingFrameInfo [iLayer].data ()));
383378 }
384- checkGPUError (cudaHostUnregister (mHostNTracklets .data ()));
385- checkGPUError (cudaHostUnregister (mHostNCells .data ()));
386- mHostRegistered = false ;
379+ checkGPUError (cudaHostUnregister (mTrackingFrameInfoDevice .data ()));
387380}
388381
389382template <int nLayers>
@@ -522,17 +515,21 @@ void TimeFrameGPU<nLayers>::loadClustersDevice()
522515}
523516
524517template <int nLayers>
525- void TimeFrameGPU<nLayers>::loadTrackingFrameInfoDevice()
518+ void TimeFrameGPU<nLayers>::loadTrackingFrameInfoDevice(const int iteration )
526519{
527520 for (auto iLayer{0 }; iLayer < nLayers; ++iLayer) {
528521 LOGP (debug, " gpu-transfer: loading {} tfinfo on layer {}, for {} MB." , mTrackingFrameInfo [iLayer].size (), iLayer, mTrackingFrameInfo [iLayer].size () * sizeof (TrackingFrameInfo) / MB );
529522 allocMemAsync (reinterpret_cast <void **>(&mTrackingFrameInfoDevice [iLayer]), mTrackingFrameInfo [iLayer].size () * sizeof (TrackingFrameInfo), nullptr , getExtAllocator ());
530523 // Register and move data
531- checkGPUError (cudaHostRegister (mTrackingFrameInfo [iLayer].data (), mTrackingFrameInfo [iLayer].size () * sizeof (TrackingFrameInfo), cudaHostRegisterPortable));
524+ if (!iteration) {
525+ checkGPUError (cudaHostRegister (mTrackingFrameInfo [iLayer].data (), mTrackingFrameInfo [iLayer].size () * sizeof (TrackingFrameInfo), cudaHostRegisterPortable));
526+ }
532527 checkGPUError (cudaMemcpyAsync (mTrackingFrameInfoDevice [iLayer], mTrackingFrameInfo [iLayer].data (), mTrackingFrameInfo [iLayer].size () * sizeof (TrackingFrameInfo), cudaMemcpyHostToDevice, mGpuStreams [0 ].get ()));
533528 }
534529 allocMemAsync (reinterpret_cast <void **>(&mTrackingFrameInfoDeviceArray ), nLayers * sizeof (TrackingFrameInfo*), nullptr , getExtAllocator ());
535- checkGPUError (cudaHostRegister (mTrackingFrameInfoDevice .data (), nLayers * sizeof (TrackingFrameInfo*), cudaHostRegisterPortable));
530+ if (!iteration) {
531+ checkGPUError (cudaHostRegister (mTrackingFrameInfoDevice .data (), nLayers * sizeof (TrackingFrameInfo*), cudaHostRegisterPortable));
532+ }
536533 checkGPUError (cudaMemcpyAsync (mTrackingFrameInfoDeviceArray , mTrackingFrameInfoDevice .data (), nLayers * sizeof (TrackingFrameInfo*), cudaMemcpyHostToDevice, mGpuStreams [0 ].get ()));
537534}
538535
@@ -570,7 +567,7 @@ template <int nLayers>
570567void TimeFrameGPU<nLayers>::loadRoadsDevice()
571568{
572569 LOGP (debug, " gpu-transfer: loading {} roads, for {} MB." , mRoads .size (), mRoads .size () * sizeof (Road<nLayers - 2 >) / MB );
573- allocMemAsync (reinterpret_cast <void **>(&mRoadsDevice ), mRoads .size () * sizeof (Road<nLayers - 2 >), &(mGpuStreams [0 ]), false );
570+ allocMemAsync (reinterpret_cast <void **>(&mRoadsDevice ), mRoads .size () * sizeof (Road<nLayers - 2 >), &(mGpuStreams [0 ]), getExtAllocator () );
574571 checkGPUError (cudaHostRegister (mRoads .data (), mRoads .size () * sizeof (Road<nLayers - 2 >), cudaHostRegisterPortable));
575572 checkGPUError (cudaMemcpyAsync (mRoadsDevice , mRoads .data (), mRoads .size () * sizeof (Road<nLayers - 2 >), cudaMemcpyHostToDevice, mGpuStreams [0 ].get ()));
576573}
@@ -579,7 +576,7 @@ template <int nLayers>
579576void TimeFrameGPU<nLayers>::loadTrackSeedsDevice(std::vector<CellSeed>& seeds)
580577{
581578 LOGP (debug, " gpu-transfer: loading {} track seeds, for {} MB." , seeds.size (), seeds.size () * sizeof (CellSeed) / MB );
582- allocMemAsync (reinterpret_cast <void **>(&mTrackSeedsDevice ), seeds.size () * sizeof (CellSeed), &(mGpuStreams [0 ]), false );
579+ allocMemAsync (reinterpret_cast <void **>(&mTrackSeedsDevice ), seeds.size () * sizeof (CellSeed), &(mGpuStreams [0 ]), getExtAllocator () );
583580 checkGPUError (cudaHostRegister (seeds.data (), seeds.size () * sizeof (CellSeed), cudaHostRegisterPortable));
584581 checkGPUError (cudaMemcpyAsync (mTrackSeedsDevice , seeds.data (), seeds.size () * sizeof (CellSeed), cudaMemcpyHostToDevice, mGpuStreams [0 ].get ()));
585582}
@@ -589,8 +586,8 @@ void TimeFrameGPU<nLayers>::createTrackITSExtDevice(const std::vector<CellSeed>&
589586{
590587 mTrackITSExt .clear ();
591588 mTrackITSExt .resize (seeds.size ());
592- LOGP (debug , " gpu-allocation: reserving {} tracks, for {} MB." , seeds.size (), seeds.size () * sizeof (o2::its::TrackITSExt) / MB );
593- allocMemAsync (reinterpret_cast <void **>(&mTrackITSExtDevice ), seeds.size () * sizeof (o2::its::TrackITSExt), &(mGpuStreams [0 ]), false );
589+ LOGP (info , " gpu-allocation: reserving {} tracks, for {} MB." , seeds.size (), seeds.size () * sizeof (o2::its::TrackITSExt) / MB );
590+ allocMemAsync (reinterpret_cast <void **>(&mTrackITSExtDevice ), seeds.size () * sizeof (o2::its::TrackITSExt), &(mGpuStreams [0 ]), getExtAllocator () );
594591 checkGPUError (cudaMemsetAsync (mTrackITSExtDevice , 0 , seeds.size () * sizeof (o2::its::TrackITSExt), mGpuStreams [0 ].get ()));
595592 checkGPUError (cudaHostRegister (mTrackITSExt .data (), seeds.size () * sizeof (o2::its::TrackITSExt), cudaHostRegisterPortable));
596593}
@@ -600,8 +597,8 @@ void TimeFrameGPU<nLayers>::createTrackITSExtDevice()
600597{
601598 mTrackITSExt .clear ();
602599 mTrackITSExt .resize (mRoads .size ());
603- LOGP (debug , " gpu-allocation: reserving {} tracks, for {} MB." , mRoads .size (), mRoads .size () * sizeof (o2::its::TrackITSExt) / MB );
604- allocMemAsync (reinterpret_cast <void **>(&mTrackITSExtDevice ), mRoads .size () * sizeof (o2::its::TrackITSExt), &(mGpuStreams [0 ]), false );
600+ LOGP (info , " gpu-allocation: reserving {} tracks, for {} MB." , mRoads .size (), mRoads .size () * sizeof (o2::its::TrackITSExt) / MB );
601+ allocMemAsync (reinterpret_cast <void **>(&mTrackITSExtDevice ), mRoads .size () * sizeof (o2::its::TrackITSExt), &(mGpuStreams [0 ]), getExtAllocator () );
605602 checkGPUError (cudaMemsetAsync (mTrackITSExtDevice , 0 , mRoads .size () * sizeof (o2::its::TrackITSExt), mGpuStreams [0 ].get ()));
606603 checkGPUError (cudaHostRegister (mTrackITSExt .data (), mRoads .size () * sizeof (o2::its::TrackITSExt), cudaHostRegisterPortable));
607604}
0 commit comments