Program Listing for File grid_barrier.h

Return to documentation for file (include/embers/primitives/grid_barrier.h)

/* Copyright © 2020 Advanced Micro Devices, Inc. All rights reserved */

#ifndef _EMBERS_GRID_BARRIER_H_
#define _EMBERS_GRID_BARRIER_H_

#include "embers/atomic.h"
#include "embers/memory.h"

namespace embers
{

class GridBarrier
{
 public:
  using Counter = atomic<unsigned int, MemoryScope::AGENT>;

 private:
  // Counters in global device memory
  unique_ptr<Counter[]> d_sync;

 public:
  static unique_ptr<Counter[]> AllocateCounters(unsigned int num_blocks, int hip_dev);

  static unique_ptr<Counter[]> AllocateCountersHost(unsigned int num_blocks);

  GridBarrier();


  GridBarrier(unique_ptr<Counter[]> counters);

  __device__ __forceinline__ void Sync() const;
};

}  // namespace embers
#include "grid_barrier_impl.h"
#endif  // _EMBERS_GRID_BARRIER_H_