CMakeLists.txt 8.62 KB
Newer Older
yanjl1's avatar
Initial  
yanjl1 committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# Copyright © Advanced Micro Devices, Inc., or its affiliates.
# SPDX-License-Identifier:  MIT

cmake_minimum_required(VERSION 3.25.2)

# Enable PIC/PIE to ensure compatibility with the plugin loader system (dlopen). This prevents
# potential Thread Local Storage (TLS) model mismatches between the executable and dynamically
# loaded backend plugins.
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

add_compile_definitions(__HIP_PLATFORM_AMD__)

if(DEFINED ENV{ROCM_PATH})
    set(ROCM_PATH "$ENV{ROCM_PATH}")
else()
    message(FATAL_ERROR "Must be source dtk/env.sh")
endif()

project(hipdnn_samples VERSION 0.1.0 LANGUAGES C CXX)
include(GNUInstallDirs)
set(CMAKE_CXX_STANDARD 17)

find_package(hip REQUIRED)
find_package(Threads REQUIRED)

if(NOT TARGET hipdnn_frontend)
    find_package(hipdnn_frontend CONFIG REQUIRED)
endif()

include_directories(${CMAKE_CURRENT_LIST_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

list(PREPEND HIPDNN_WARNING_COMPILE_OPTIONS
    -Werror                                  # Treat all warnings as errors
    -Wall                                    # Enable most common warnings
    -Wextra                                  # Enable additional warnings not covered by -Wall
    -Wpedantic                               # Enforce strict ISO C++ compliance
    -Wshadow                                 # Warn about variable shadowing
    -Wnon-virtual-dtor                       # Warn if a class with virtual functions has a non-virtual destructor
    -Wold-style-cast                         # Warn about C-style casts
    -Wcast-align                             # Warn about potential performance issues with misaligned casts
    -Woverloaded-virtual                     # Warn if a base class function is hidden by a derived class function with the same name
    -Wconversion                             # Warn about implicit type conversions that may alter a value
    -Wsign-conversion                        # Warn about implicit conversions between signed and unsigned types
    -Wnull-dereference                       # Warn about dereferencing null pointers
    -Wdouble-promotion                       # Warn when a float is implicitly promoted to a double
    -Wformat=2                               # Enable stricter format string checks
    -Winit-self                              # Warn about variables initialized with itself
    -Wunreachable-code                       # Warn about unreachable code
    -Wno-return-type                         # DTK-25.04.2 need ignore
    -Wswitch-default                         # Warn if a switch statement does not have a default case
)

function(add_hipdnn_sample NAME SOURCE)
    add_executable(${NAME} ${SOURCE})
    target_compile_options(${NAME} PRIVATE ${HIPDNN_WARNING_COMPILE_OPTIONS})
    target_link_libraries(${NAME} PRIVATE hip::host Threads::Threads hipdnn_frontend)
endfunction()

add_hipdnn_sample(bn_inference batchnorm/BnInference.cpp)
#add_hipdnn_sample(bn_finalize batchnorm/BnFinalize.cpp)
add_hipdnn_sample(bn_training batchnorm/BnTraining.cpp)
add_hipdnn_sample(bn_backward batchnorm/BnBackward.cpp)
#add_hipdnn_sample(bn_backward_weight batchnorm/BnBackwardWeight.cpp)
add_hipdnn_sample(conv_forward convolution/ConvForward.cpp)
add_hipdnn_sample(conv_backward convolution/ConvBackward.cpp)
add_hipdnn_sample(conv_wrw convolution/ConvBackwardWeight.cpp)
add_hipdnn_sample(conv_bias_prelu conv_fusion/ConvBiasPrelu.cpp)
add_hipdnn_sample(conv_bias_prelu_add conv_fusion/ConvBiasPreluAdd.cpp)
add_hipdnn_sample(conv_bias_swish_add conv_fusion/ConvBiasSwishAdd.cpp)
add_hipdnn_sample(conv_bias_swish conv_fusion/ConvBiasSwish.cpp)
add_hipdnn_sample(conv_bias_relu conv_fusion/ConvBiasRelu.cpp)
add_hipdnn_sample(conv_bias_add conv_fusion/ConvBiasAdd.cpp)
add_hipdnn_sample(conv_bias conv_fusion/ConvBias.cpp)
add_hipdnn_sample(conv_bias_add_relu conv_fusion/ConvBiasAddRelu.cpp)
add_hipdnn_sample(convbwd_bias_relu conv_fusion/ConvbwdBiasRelu.cpp)
add_hipdnn_sample(convint8_bias conv_fusion/Int8ConvBias.cpp)
add_hipdnn_sample(convint8_bias_add conv_fusion/Int8ConvBiasAdd.cpp)
add_hipdnn_sample(convint8_bias_add_relu conv_fusion/Int8ConvBiasAddRelu.cpp)
add_hipdnn_sample(convint8_bias_relu conv_fusion/Int8ConvBiasRelu.cpp)
add_hipdnn_sample(convint8_bias_relu_add conv_fusion/Int8ConvBiasReluAdd.cpp)
add_hipdnn_sample(convfp16_bias_relu conv_fusion/Fp16ConvBiasRelu.cpp)
add_hipdnn_sample(ln_inference layernorm/LnInference.cpp)
#add_hipdnn_sample(ln_backward layernorm/LnBackward.cpp)
add_hipdnn_sample(rms_forward rmsnorm/RmsnormForward.cpp)
add_hipdnn_sample(deform_conv_fprop deformconvolution/DeformConvForward.cpp)
add_hipdnn_sample(deform_conv_dgrad deformconvolution/DeformConvBackward.cpp)
add_hipdnn_sample(deform_conv_wgrad deformconvolution/DeformConvBackwardWeight.cpp)
add_hipdnn_sample(gn_training groupnorm/GNTraining.cpp)
add_hipdnn_sample(gn_inference groupnorm/GNInference.cpp)
add_hipdnn_sample(gn_backward groupnorm/GNBackward.cpp)
add_hipdnn_sample(add_layernorm fusion/AddLayernorm.cpp)
add_hipdnn_sample(gn_swish fusion/GroupnormSwish.cpp)
add_hipdnn_sample(sdpa_inference sdpa/SDPAInference.cpp)
add_hipdnn_sample(reduction reduction/Reduction.cpp)
add_hipdnn_sample(reluBwd_reduction reduction/PointwiseReduction.cpp)
add_hipdnn_sample(transpose transpose/Transpose.cpp)
#add_hipdnn_sample(genstats genstats/Genstats.cpp)
add_hipdnn_sample(reshape_transpose fusion/ReshapeTranspose.cpp)
#add_hipdnn_sample(resample resample/Resample.cpp)
add_hipdnn_sample(deform_attn_fprop deformattention/DeformAttnForward.cpp)
add_hipdnn_sample(deform_attn_dgrad deformattention/DeformAttnBackward.cpp)
add_hipdnn_sample(instancenorm_inference instancenorm/InstancenormInference.cpp)
add_hipdnn_sample(instancenorm_backward instancenorm/InstancenormBackward.cpp)
add_hipdnn_sample(instancenorm_training instancenorm/InstancenormTraining.cpp)
#add_hipdnn_sample(block_scale_dequantize block_scale/BlockScaleDequantize.cpp)
#add_hipdnn_sample(block_scale_quantize block_scale/BlockScaleQuantize.cpp)
#add_hipdnn_sample(slice slice/Slice.cpp)
#add_hipdnn_sample(rng rng/Rng.cpp)
add_hipdnn_sample(adamw adamw/Adamw.cpp)
add_hipdnn_sample(transformer_adamw adamw/TransformerAdamw.cpp)
add_hipdnn_sample(concatenate concatenate/Concatenate.cpp)
# add_hipdnn_sample(pw_conv_genstats fusion/PointwiseConvGenstats.cpp)
add_hipdnn_sample(concat_conv concat_conv_fusion/ConcatConv.cpp)
add_hipdnn_sample(concat_conv_bias concat_conv_fusion/ConcatConvBias.cpp)
add_hipdnn_sample(concat_conv_bias_add concat_conv_fusion/ConcatConvBiasAdd.cpp)
add_hipdnn_sample(concat_conv_bias_leakyRelu concat_conv_fusion/ConcatConvBiasLeakyRelu.cpp)
add_hipdnn_sample(concat_conv_bias_leakyRelu_add concat_conv_fusion/ConcatConvBiasLeakyReluAdd.cpp)
add_hipdnn_sample(conv_bias_depthToSpace conv_depthtospace_fusion/ConvBiasDepthToSpace.cpp)
add_hipdnn_sample(conv_bias_depthToSpace_add conv_depthtospace_fusion/ConvBiasDepthToSpaceAdd.cpp)
add_hipdnn_sample(conv_bias_add_depthToSpace conv_depthtospace_fusion/ConvBiasAddDepthToSpace.cpp)
add_hipdnn_sample(conv_bias_depthToSpace_clippedRelu conv_depthtospace_fusion/ConvBiasDepthToSpaceClippedRelu.cpp)
add_hipdnn_sample(conv_bias_depthToSpace_clippedRelu_add conv_depthtospace_fusion/ConvBiasDepthToSpaceClippedReluAdd.cpp)
add_hipdnn_sample(conv_depthToSpace conv_depthtospace_fusion/ConvDepthToSpace.cpp)
add_hipdnn_sample(matmul matmul/Matmul.cpp)
add_hipdnn_sample(matmul_bias matmul_fusion/MatmulBias.cpp)
add_hipdnn_sample(matmul_bias_swish matmul_fusion/MatmulBiasSwish.cpp)
add_hipdnn_sample(rope_forward rope/RopeForward.cpp)
add_hipdnn_sample(rope_backward rope/RopeBackward.cpp)
add_hipdnn_sample(pointwise_binary pointwise/BinaryPointwise.cpp)
add_hipdnn_sample(softmax softmax/Softmax.cpp)
add_hipdnn_sample(ctc_loss ctc_loss/CtcLoss.cpp)
add_hipdnn_sample(kthvalue2d kthvalue/Kthvalue2D.cpp)
add_hipdnn_sample(kthvalue4d kthvalue/Kthvalue4D.cpp)
add_hipdnn_sample(multi_margin_loss multi_margin_loss/MultiMarginLoss.cpp)
add_hipdnn_sample(soft_margin_loss soft_margin_loss/SoftMarginLossForward.cpp)
add_hipdnn_sample(soft_margin_loss_backward soft_margin_loss/SoftMarginLossBackward.cpp)
add_hipdnn_sample(getitem_indices_backward getitem_backward/GetitemBackwardIndices.cpp)
add_hipdnn_sample(getitem_slice_backward getitem_backward/GetitemBackwardSlice.cpp)
add_hipdnn_sample(scale_bias_relu_conv_genstats conv_bn_fusion/ScaleBiasReluConvGenstats.cpp)
add_hipdnn_sample(scale_bias_relu_convwrw conv_bn_fusion/ScaleBiasReluConvwrw.cpp)
add_hipdnn_sample(mul_mul_add_add conv_bn_fusion/MulMulAddAdd.cpp)
add_hipdnn_sample(sub_mul_mul_add_convbwd_relubwd_bnwrw conv_bn_fusion/SubMulMulAddConvbwdRelubwdBnwrw.cpp)
add_hipdnn_sample(conv_genstats conv_bn_fusion/ConvGenstats.cpp)
add_hipdnn_sample(scale_bias conv_bn_fusion/ScaleBias.cpp)