Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:03:46

0001 #include "CUDADataFormats/TrackingRecHit/interface/TrackingRecHitSoAHost.h"
0002 #include "CUDADataFormats/TrackingRecHit/interface/TrackingRecHitSoADevice.h"
0003 
0004 #include "HeterogeneousCore/CUDAUtilities/interface/copyAsync.h"
0005 #include "HeterogeneousCore/CUDAUtilities/interface/requireDevices.h"
0006 #include "HeterogeneousCore/CUDAUtilities/interface/cudaCheck.h"
0007 #include "HeterogeneousCore/CUDAUtilities/interface/allocate_device.h"
0008 #include "Geometry/CommonTopologies/interface/SimplePixelTopology.h"
0009 
0010 namespace testTrackingRecHitSoA {
0011 
0012   template <typename TrackerTraits>
0013   void runKernels(TrackingRecHitSoADevice<TrackerTraits>& hits, cudaStream_t stream);
0014 
0015 }
0016 
0017 int main() {
0018   using ParamsOnGPU = TrackingRecHitSoADevice<pixelTopology::Phase1>::ParamsOnGPU;
0019   cms::cudatest::requireDevices();
0020 
0021   cudaStream_t stream;
0022   cudaCheck(cudaStreamCreateWithFlags(&stream, cudaStreamDefault));
0023 
0024   // inner scope to deallocate memory before destroying the stream
0025   {
0026     uint32_t nHits = 2000;
0027     int32_t offset = 100;
0028     uint32_t moduleStart[1856];
0029 
0030     for (size_t i = 0; i < 1856; i++) {
0031       moduleStart[i] = i * 2;
0032     }
0033     ParamsOnGPU* cpeParams_d;
0034     cudaCheck(cudaMalloc(&cpeParams_d, sizeof(ParamsOnGPU)));
0035     TrackingRecHitSoADevice<pixelTopology::Phase1> tkhit(nHits, offset, cpeParams_d, &moduleStart[0], stream);
0036 
0037     testTrackingRecHitSoA::runKernels<pixelTopology::Phase1>(tkhit, stream);
0038     printf("tkhit hits %d \n", tkhit.nHits());
0039     auto test = tkhit.localCoordToHostAsync(stream);
0040     printf("test[9] %.2f\n", test[9]);
0041 
0042     auto ret = tkhit.hitsModuleStartToHostAsync(stream);
0043     printf("mods[9] %d\n", ret[9]);
0044     cudaCheck(cudaFree(cpeParams_d));
0045   }
0046 
0047   cudaCheck(cudaStreamDestroy(stream));
0048 
0049   return 0;
0050 }