CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Types | Public Member Functions | Static Public Attributes | Private Attributes
cms::cuda::AtomicPairCounter Class Reference

#include <AtomicPairCounter.h>

Classes

union  Atomic2
 
struct  Counters
 

Public Types

using c_type = unsigned long long int
 

Public Member Functions

__host__ __device__ __attribute__ ((always_inline)) Counters add(uint32_t i)
 
 AtomicPairCounter ()
 
 AtomicPairCounter (c_type i)
 
__device__ __host__ Counters get () const
 
__device__ __host__
AtomicPairCounter
operator= (c_type i)
 

Static Public Attributes

static constexpr c_type incr = 1UL << 32
 

Private Attributes

Atomic2 counter
 

Detailed Description

Definition at line 11 of file AtomicPairCounter.h.

Member Typedef Documentation

using cms::cuda::AtomicPairCounter::c_type = unsigned long long int

Definition at line 13 of file AtomicPairCounter.h.

Constructor & Destructor Documentation

cms::cuda::AtomicPairCounter::AtomicPairCounter ( )
inline

Definition at line 15 of file AtomicPairCounter.h.

15 {}
cms::cuda::AtomicPairCounter::AtomicPairCounter ( c_type  i)
inline

Member Function Documentation

__host__ __device__ cms::cuda::AtomicPairCounter::__attribute__ ( (always_inline)  )
inline

Definition at line 38 of file AtomicPairCounter.h.

References cms::cuda::AtomicPairCounter::Atomic2::ac, cms::cudacompat::atomicAdd(), c, counter, cms::cuda::AtomicPairCounter::Atomic2::counters, mps_fire::i, incr, and runTheMatrix::ret.

38  {
39  c_type c = i;
40  c += incr;
41  Atomic2 ret;
42 #ifdef __CUDA_ARCH__
43  ret.ac = atomicAdd(&counter.ac, c);
44 #else
45  ret.ac = counter.ac;
46  counter.ac += c;
47 #endif
48  return ret.counters;
49  }
unsigned long long int c_type
tuple ret
prodAgent to be discontinued
const edm::EventSetup & c
static constexpr c_type incr
T1 atomicAdd(T1 *a, T2 b)
Definition: cudaCompat.h:61
__device__ __host__ Counters cms::cuda::AtomicPairCounter::get ( ) const
inline
__device__ __host__ AtomicPairCounter& cms::cuda::AtomicPairCounter::operator= ( c_type  i)
inline

Definition at line 18 of file AtomicPairCounter.h.

References cms::cuda::AtomicPairCounter::Atomic2::ac, counter, and mps_fire::i.

18  {
19  counter.ac = i;
20  return *this;
21  }

Member Data Documentation

Atomic2 cms::cuda::AtomicPairCounter::counter
private
constexpr c_type cms::cuda::AtomicPairCounter::incr = 1UL << 32
static

Definition at line 33 of file AtomicPairCounter.h.

Referenced by __attribute__().