"git@developer.sourcefind.cn:gaoqiong/composable_kernel.git" did not exist on "66e610768de48c56d6bfc5e082c5e1b5a4e4530d"
Commit ae275040 authored by Adam Osewski's avatar Adam Osewski
Browse files

Add store and reset functions to workgroup barrier.

parent 030128fa
...@@ -7,7 +7,7 @@ struct workgroup_barrier ...@@ -7,7 +7,7 @@ struct workgroup_barrier
{ {
__device__ workgroup_barrier(uint32_t* ptr) : base_ptr(ptr) {} __device__ workgroup_barrier(uint32_t* ptr) : base_ptr(ptr) {}
__device__ uint32_t ld(uint32_t offset) __device__ uint32_t ld(uint32_t offset) const
{ {
#if 0 #if 0
float d = llvm_amdgcn_raw_buffer_load_fp32( float d = llvm_amdgcn_raw_buffer_load_fp32(
...@@ -26,6 +26,11 @@ struct workgroup_barrier ...@@ -26,6 +26,11 @@ struct workgroup_barrier
return __atomic_load_n(base_ptr + offset, __ATOMIC_RELAXED); return __atomic_load_n(base_ptr + offset, __ATOMIC_RELAXED);
} }
__device__ void st(uint32_t offset, uint32_t value)
{
__atomic_store_n(base_ptr + offset, value, __ATOMIC_RELEASE);
}
__device__ void wait_eq(uint32_t offset, uint32_t value) __device__ void wait_eq(uint32_t offset, uint32_t value)
{ {
if(threadIdx.x == 0) if(threadIdx.x == 0)
...@@ -68,6 +73,15 @@ struct workgroup_barrier ...@@ -68,6 +73,15 @@ struct workgroup_barrier
} }
} }
__device__ void reset(uint32_t offset)
{
if(threadIdx.x == 0)
{
st(offset, 0);
}
__syncthreads();
}
uint32_t* base_ptr; uint32_t* base_ptr;
}; };
} // namespace ck } // namespace ck
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment