File indexing completed on 2023-03-17 10:49:13
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include <cstdint>
0017 #include "CUDADataFormats/Track/interface/TrackSoAHeterogeneousDevice.h"
0018 #include "CUDADataFormats/Track/interface/TrackSoAHeterogeneousHost.h"
0019 #include "HeterogeneousCore/CUDAUtilities/interface/requireDevices.h"
0020 #include "HeterogeneousCore/CUDAUtilities/interface/cudaCheck.h"
0021
0022 #include "Geometry/CommonTopologies/interface/SimplePixelTopology.h"
0023
0024 namespace testTrackSoA {
0025
0026 template <typename TrackerTraits>
0027 void runKernels(TrackSoAView<TrackerTraits> &tracks_view, cudaStream_t stream);
0028 }
0029
0030 int main() {
0031 cms::cudatest::requireDevices();
0032
0033 cudaStream_t stream;
0034 cudaCheck(cudaStreamCreateWithFlags(&stream, cudaStreamNonBlocking));
0035
0036
0037 {
0038
0039
0040 TrackSoAHeterogeneousDevice<pixelTopology::Phase1> tracks_d(stream);
0041 testTrackSoA::runKernels<pixelTopology::Phase1>(tracks_d.view(), stream);
0042
0043
0044
0045 TrackSoAHeterogeneousHost<pixelTopology::Phase1> tracks_h(stream);
0046
0047 cudaCheck(cudaMemcpyAsync(
0048 tracks_h.buffer().get(), tracks_d.const_buffer().get(), tracks_d.bufferSize(), cudaMemcpyDeviceToHost, stream));
0049 cudaCheck(cudaStreamSynchronize(stream));
0050
0051
0052 std::cout << "pt"
0053 << "\t"
0054 << "eta"
0055 << "\t"
0056 << "chi2"
0057 << "\t"
0058 << "quality"
0059 << "\t"
0060 << "nLayers"
0061 << "\t"
0062 << "hitIndices off" << std::endl;
0063
0064 for (int i = 0; i < 10; ++i) {
0065 std::cout << tracks_h.view()[i].pt() << "\t" << tracks_h.view()[i].eta() << "\t" << tracks_h.view()[i].chi2()
0066 << "\t" << (int)tracks_h.view()[i].quality() << "\t" << (int)tracks_h.view()[i].nLayers() << "\t"
0067 << tracks_h.view().hitIndices().off[i] << std::endl;
0068 }
0069 }
0070 cudaCheck(cudaStreamDestroy(stream));
0071
0072 return 0;
0073 }