synchronization.hpp 518 Bytes
Newer Older
Chao Liu's avatar
Chao Liu committed
1
2
3
// SPDX-License-Identifier: MIT
// Copyright (c) 2018-2022, Advanced Micro Devices, Inc. All rights reserved.

Chao Liu's avatar
Chao Liu committed
4
#pragma once
Chao Liu's avatar
Chao Liu committed
5

Chao Liu's avatar
Chao Liu committed
6
#include "ck/ck.hpp"
Chao Liu's avatar
Chao Liu committed
7
8
9
10
11

namespace ck {

__device__ void block_sync_lds()
{
12
#if CK_EXPERIMENTAL_BLOCK_SYNC_LDS_WITHOUT_SYNC_VMEM
Chao Liu's avatar
Chao Liu committed
13
14
15
16
17
    asm volatile("\
    s_waitcnt lgkmcnt(0) \n \
    s_barrier \
    " ::);
#else
18
    __syncthreads();
Chao Liu's avatar
Chao Liu committed
19
20
#endif
}
21

ltqin's avatar
ltqin committed
22
__device__ void s_nop()
root's avatar
root committed
23
{
ltqin's avatar
ltqin committed
24
#if 1
root's avatar
root committed
25
    asm volatile("\
ltqin's avatar
ltqin committed
26
    s_nop 0 \n \
root's avatar
root committed
27
28
    " ::);
#else
ltqin's avatar
ltqin committed
29
    __builtin_amdgcn_sched_barrier(0);
root's avatar
root committed
30
31
#endif
}
Chao Liu's avatar
Chao Liu committed
32
33

} // namespace ck