Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-12-30 23:27:57

0001 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/chooseDevice.h"
0002 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/EDMetadataAcquireSentry.h"
0003 #include "HeterogeneousCore/AlpakaCore/interface/EventCache.h"
0004 #include "HeterogeneousCore/AlpakaCore/interface/QueueCache.h"
0005 
0006 namespace ALPAKA_ACCELERATOR_NAMESPACE {
0007   namespace detail {
0008     EDMetadataAcquireSentry::EDMetadataAcquireSentry(edm::StreamID streamID,
0009                                                      edm::WaitingTaskWithArenaHolder holder,
0010                                                      bool synchronize)
0011         : EDMetadataAcquireSentry(detail::chooseDevice(streamID), std::move(holder), synchronize) {}
0012 
0013     EDMetadataAcquireSentry::EDMetadataAcquireSentry(Device const& device,
0014                                                      edm::WaitingTaskWithArenaHolder holder,
0015                                                      bool synchronize)
0016         : waitingTaskHolder_(std::move(holder)), synchronize_(synchronize) {
0017 #ifdef ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED
0018       // all synchronous backends
0019       metadata_ = std::make_shared<EDMetadata>(cms::alpakatools::getQueueCache<Queue>().get(device));
0020 #else
0021       // all asynchronous backends
0022       metadata_ = std::make_shared<EDMetadata>(cms::alpakatools::getQueueCache<Queue>().get(device),
0023                                                cms::alpakatools::getEventCache<Event>().get(device));
0024 #endif
0025     }
0026 
0027 #ifndef ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED
0028     // all asynchronous backends
0029     std::shared_ptr<EDMetadata> EDMetadataAcquireSentry::finish() {
0030       if (synchronize_) {
0031         alpaka::wait(metadata_->queue());
0032       } else {
0033         metadata_->enqueueCallback(std::move(waitingTaskHolder_));
0034       }
0035       return std::move(metadata_);
0036     }
0037 #endif
0038   }  // namespace detail
0039 }  // namespace ALPAKA_ACCELERATOR_NAMESPACE