Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-07-26 08:22:04

0001 /** TRACCC library, part of the ACTS project (R&D line)
0002  *
0003  * (c) 2023-2024 CERN for the benefit of the ACTS project
0004  *
0005  * Mozilla Public License Version 2.0
0006  */
0007 
0008 #pragma once
0009 
0010 // Local include(s).
0011 #include "utils.hpp"
0012 
0013 // Project include(s).
0014 #include "traccc/definitions/qualifiers.hpp"
0015 
0016 namespace traccc::alpaka {
0017 
0018 template <typename TAcc>
0019 struct barrier {
0020   ALPAKA_FN_INLINE ALPAKA_FN_ACC barrier(const TAcc* acc) : m_acc(acc) {};
0021 
0022   ALPAKA_FN_ACC
0023   void blockBarrier() const { ::alpaka::syncBlockThreads(*m_acc); }
0024 
0025   ALPAKA_FN_ACC
0026   bool blockOr(bool predicate) const {
0027     return ::alpaka::syncBlockThreadsPredicate<::alpaka::BlockOr>(*m_acc,
0028                                                                   predicate);
0029   }
0030 
0031   ALPAKA_FN_ACC
0032   bool blockAnd(bool predicate) const {
0033     return ::alpaka::syncBlockThreadsPredicate<::alpaka::BlockAnd>(*m_acc,
0034                                                                    predicate);
0035   }
0036 
0037   ALPAKA_FN_ACC
0038   bool blockCount(int threadCount) const {
0039     return ::alpaka::syncBlockThreadsPredicate<::alpaka::BlockCount>(
0040         *m_acc, threadCount);
0041   }
0042 
0043  private:
0044   const TAcc* m_acc;
0045 };
0046 
0047 }  // namespace traccc::alpaka