config_amd.hpp.in 1.09 KB
Newer Older
Chao Liu's avatar
Chao Liu committed
1
2
#ifndef CK_CONFIG_AMD_HPP
#define CK_CONFIG_AMD_HPP
Chao Liu's avatar
Chao Liu committed
3
4
5
6

#include "hip/hip_runtime.h"
#include "hip/hip_fp16.h"

Chao Liu's avatar
Chao Liu committed
7
#define CK_DEVICE_BACKEND_AMD 1
Chao Liu's avatar
Chao Liu committed
8
#define CK_USE_UNSIGNED_INDEX_TYPE 0
Chao Liu's avatar
Chao Liu committed
9
#define CK_USE_AMD_INLINE_ASM 1
Chao Liu's avatar
Chao Liu committed
10
#define CK_EXPERIMENTAL_USE_MORE_COMPILE_STATIC_BLOCKWISE_GENERIC_SLICE_COPY_V1 1
11
#define CK_EXPERIMENTAL_USE_MORE_COMPILE_STATIC_THREADWISE_GENERIC_TENSOR_SLICE_COPY_V1R1 0
12
#define CK_EXPERIMENTAL_USE_MORE_COMPILE_STATIC_THREADWISE_GENERIC_TENSOR_SLICE_COPY_V1R2 0
13
#define CK_EXPERIMENTAL_USE_MORE_COMPILE_STATIC_THREADWISE_GENERIC_TENSOR_SLICE_COPY_V2R1 0
Chao Liu's avatar
Chao Liu committed
14

Chao Liu's avatar
Chao Liu committed
15
16
namespace ck {

17
18
#if CK_USE_UNSIGNED_INDEX_TYPE
using index_t = uint32_t;
Chao Liu's avatar
Chao Liu committed
19
#else
20
using index_t = int32_t;
Chao Liu's avatar
Chao Liu committed
21
22
#endif

Chao Liu's avatar
Chao Liu committed
23
24
25
26
27
// For some reason, HIP compiler need this definition to generate optimal load and store
// instruction
typedef float float2_t __attribute__((ext_vector_type(2)));
typedef float float4_t __attribute__((ext_vector_type(4)));

28
29
typedef int32_t int32x4_t __attribute__((ext_vector_type(4)));

Chao Liu's avatar
Chao Liu committed
30
31
template <class T>
__device__ void fused_multiply_accumulate(T& d, const T& s0, const T& s1)
Chao Liu's avatar
Chao Liu committed
32
33
34
35
36
37
38
{
    d += s0 * s1;
}

} // namespace ck

#endif