Merge pull request #38 from Yiltan/ro/implement-sigops

Implements Signalling Operations for RO
This commit is contained in:
Yiltan
2025-02-10 15:10:07 -05:00
committed by GitHub
5 changed files with 150 additions and 1 deletions
+21
View File
@@ -229,6 +229,27 @@ class ROContext : public Context {
template <typename T>
__device__ void get_nbi_wave(T *dest, const T *source, size_t nelems, int pe);
#define RO_CONTEXT_PUT_SIGNAL_DEC(SUFFIX) \
template <typename T> \
__device__ void put_signal##SUFFIX(T *dest, const T *source, size_t nelems, \
uint64_t *sig_addr, uint64_t signal, int sig_op, \
int pe); \
\
__device__ void putmem_signal##SUFFIX(void *dest, const void *source, size_t nelems, \
uint64_t *sig_addr, uint64_t signal, int sig_op, \
int pe);
RO_CONTEXT_PUT_SIGNAL_DEC()
RO_CONTEXT_PUT_SIGNAL_DEC(_wg)
RO_CONTEXT_PUT_SIGNAL_DEC(_wave)
RO_CONTEXT_PUT_SIGNAL_DEC(_nbi)
RO_CONTEXT_PUT_SIGNAL_DEC(_nbi_wg)
RO_CONTEXT_PUT_SIGNAL_DEC(_nbi_wave)
__device__ uint64_t signal_fetch(const uint64_t *sig_addr);
__device__ uint64_t signal_fetch_wg(const uint64_t *sig_addr);
__device__ uint64_t signal_fetch_wave(const uint64_t *sig_addr);
private:
__device__ uint64_t *get_unused_atomic();