synchronization.hpp 627 Bytes
Newer Older
Umang Yadav's avatar
Umang Yadav committed
1
2
3

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Weverything"
Chao Liu's avatar
Chao Liu committed
4
// SPDX-License-Identifier: MIT
Illia Silin's avatar
Illia Silin committed
5
// Copyright (c) 2018-2023, Advanced Micro Devices, Inc. All rights reserved.
Chao Liu's avatar
Chao Liu committed
6

Chao Liu's avatar
Chao Liu committed
7
#pragma once
Chao Liu's avatar
Chao Liu committed
8

Chao Liu's avatar
Chao Liu committed
9
#include "ck/ck.hpp"
Chao Liu's avatar
Chao Liu committed
10
11
12
13
14

namespace ck {

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

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

} // namespace ck
Umang Yadav's avatar
Umang Yadav committed
37
38

#pragma clang diagnostic pop