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
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 }