File indexing completed on 2025-07-03 00:42:11
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include <cstdlib>
0017 #include <unistd.h>
0018
0019 #include <alpaka/alpaka.hpp>
0020
0021 #include "DataFormats/TrackSoA/interface/TracksDevice.h"
0022 #include "DataFormats/TrackSoA/interface/TracksHost.h"
0023 #include "DataFormats/TrackSoA/interface/alpaka/TracksSoACollection.h"
0024 #include "FWCore/Utilities/interface/stringize.h"
0025 #include "Geometry/CommonTopologies/interface/SimplePixelTopology.h"
0026 #include "HeterogeneousCore/AlpakaInterface/interface/config.h"
0027 #include "HeterogeneousCore/AlpakaInterface/interface/devices.h"
0028 #include "HeterogeneousCore/AlpakaInterface/interface/memory.h"
0029 #include "HeterogeneousCore/AlpakaInterface/interface/workdivision.h"
0030
0031 #include "TrackSoAHeterogeneous_test.h"
0032
0033 using namespace ALPAKA_ACCELERATOR_NAMESPACE;
0034 using namespace ALPAKA_ACCELERATOR_NAMESPACE::reco;
0035
0036 int main() {
0037
0038 auto const& devices = cms::alpakatools::devices<Platform>();
0039 if (devices.empty()) {
0040 std::cerr << "No devices available for the " EDM_STRINGIZE(ALPAKA_ACCELERATOR_NAMESPACE) " backend, "
0041 "the test will be skipped.\n";
0042 exit(EXIT_FAILURE);
0043 }
0044
0045
0046 for (const auto& device : devices) {
0047 Queue queue(device);
0048
0049
0050 {
0051
0052
0053 constexpr auto nTracks = 1000;
0054 constexpr auto nHits = nTracks * 5;
0055
0056 TracksSoACollection tracks_d({{nTracks, nHits}}, queue);
0057 testTrackSoA::runKernels(tracks_d.view(), queue);
0058
0059
0060
0061 ::reco::TracksHost tracks_h({{nTracks, nHits}}, queue);
0062
0063 std::cout << "no. of tracks = " << tracks_h.view().metadata().size() << std::endl;
0064 alpaka::memcpy(queue, tracks_h.buffer(), tracks_d.const_buffer());
0065 alpaka::wait(queue);
0066
0067
0068 std::cout << "pt"
0069 << "\t"
0070 << "eta"
0071 << "\t"
0072 << "chi2"
0073 << "\t"
0074 << "quality"
0075 << "\t"
0076 << "nLayers"
0077 << "\t"
0078 << "hitIndices off" << std::endl;
0079
0080 for (int i = 0; i < 10; ++i) {
0081 std::cout << tracks_h.view()[i].pt() << "\t" << tracks_h.view()[i].eta() << "\t" << tracks_h.view()[i].chi2()
0082 << "\t" << (int)tracks_h.view()[i].quality() << "\t" << (int)tracks_h.view()[i].nLayers() << "\t"
0083 << tracks_h.view()[i].hitOffsets() << std::endl;
0084 }
0085 }
0086 }
0087
0088 return EXIT_SUCCESS;
0089 }