diff --git a/example/66_gemm_bias_activation/README.md b/example/66_gemm_bias_activation/README.md new file mode 100644 index 0000000000..b5b4f2ca44 --- /dev/null +++ b/example/66_gemm_bias_activation/README.md @@ -0,0 +1,27 @@ +### Build +``` +mkdir -p build +cd build + +sh ../script/cmake-ck-dev.sh ../ # you can replace this to gfx90a, gfx942... + +make -j example_gemm_bias_add_xdl_fp16 +``` +### Run Examples + +#### args: +``` +#arg1: verification (0=no, 1=yes) +#arg2: initialization (0=no init, 1=integer value, 2=decimal value) +#arg3: time kernel (0=no, 1=yes) +arg4 to 7: M (256x), N(128x), K(32x), op_type(Add = 0, Gelu = 1, Relu = 2, Silu = 3, Sigmoid = 4) +``` +#### command: +``` +./build/bin/example_gemm_bias_add_xdl_fp16 +./build/bin/example_gemm_bias_add_xdl_fp16 1 1 1 64 3072 768 0 +./build/bin/example_gemm_bias_add_xdl_fp16 1 1 1 64 3072 768 1 +./build/bin/example_gemm_bias_add_xdl_fp16 1 1 1 64 3072 768 2 +./build/bin/example_gemm_bias_add_xdl_fp16 1 1 1 64 3072 768 3 +./build/bin/example_gemm_bias_add_xdl_fp16 1 1 1 64 3072 768 4 +``` diff --git a/example/66_gemm_bias_activation/gemm_bias_add.hpp b/example/66_gemm_bias_activation/gemm_bias_add.hpp index 5c94c4c201..806e0a17bc 100644 --- a/example/66_gemm_bias_activation/gemm_bias_add.hpp +++ b/example/66_gemm_bias_activation/gemm_bias_add.hpp @@ -66,6 +66,7 @@ struct AddActivation } // namespace ck using PassThrough = ck::tensor_operation::element_wise::PassThrough; +using Add = ck::tensor_operation::element_wise::Add; using Gelu = ck::tensor_operation::element_wise::Gelu; using Relu = ck::tensor_operation::element_wise::Relu; using Silu = ck::tensor_operation::element_wise::Silu; @@ -82,6 +83,7 @@ struct GemmBiasAddArgs ck::index_t K; }; +float gemm_bias_add_fp16(const GemmBiasAddArgs& args, const StreamConfig& config); float gemm_bias_add_relu_fp16(const GemmBiasAddArgs& args, const StreamConfig& config); float gemm_bias_add_gelu_fp16(const GemmBiasAddArgs& args, const StreamConfig& config); float gemm_bias_add_silu_fp16(const GemmBiasAddArgs& args, const StreamConfig& config); diff --git a/example/66_gemm_bias_activation/gemm_bias_add_fp16.cpp b/example/66_gemm_bias_activation/gemm_bias_add_fp16.cpp index 14643dfbdd..3d93e3a221 100644 --- a/example/66_gemm_bias_activation/gemm_bias_add_fp16.cpp +++ b/example/66_gemm_bias_activation/gemm_bias_add_fp16.cpp @@ -140,6 +140,11 @@ float run_impl(const GemmBiasAddArgs& args, const StreamConfig& config) return ave_time; } +float gemm_bias_add_fp16(const GemmBiasAddArgs& args, const StreamConfig& config) +{ + return run_impl(args, config); +} + float gemm_bias_add_relu_fp16(const GemmBiasAddArgs& args, const StreamConfig& config) { return run_impl>(args, config); diff --git a/example/66_gemm_bias_activation/gemm_bias_add_xdl_fp16.cpp b/example/66_gemm_bias_activation/gemm_bias_add_xdl_fp16.cpp index 568028d35f..c043bc3d98 100644 --- a/example/66_gemm_bias_activation/gemm_bias_add_xdl_fp16.cpp +++ b/example/66_gemm_bias_activation/gemm_bias_add_xdl_fp16.cpp @@ -172,8 +172,8 @@ int main(int argc, char* argv[]) printf("arg1: verification (0=no, 1=yes)\n"); printf("arg2: initialization (0=no init, 1=integer value, 2=decimal value)\n"); printf("arg3: time kernel (0=no, 1=yes)\n"); - printf("arg4 to 9: M (256x), N(128x), K(32x)m, op_type(Gelu = 0, Relu = 1, Silu = 2, " - "Sigmoid = 3\n"); + printf("arg4 to 7: M (256x), N(128x), K(32x)m, op_type(Add = 0, Gelu = 1, Relu = 2, Silu = " + "3, Sigmoid = 4\n"); exit(0); } @@ -240,10 +240,12 @@ int main(int argc, char* argv[]) float ave_time = 0; if(op_type == 0) - ave_time = gemm_bias_add_gelu_fp16(gemm_args, StreamConfig{nullptr, time_kernel, 20, 50}); + ave_time = gemm_bias_add_fp16(gemm_args, StreamConfig{nullptr, time_kernel, 20, 50}); else if(op_type == 1) - ave_time = gemm_bias_add_relu_fp16(gemm_args, StreamConfig{nullptr, time_kernel, 20, 50}); + ave_time = gemm_bias_add_gelu_fp16(gemm_args, StreamConfig{nullptr, time_kernel, 20, 50}); else if(op_type == 2) + ave_time = gemm_bias_add_relu_fp16(gemm_args, StreamConfig{nullptr, time_kernel, 20, 50}); + else if(op_type == 3) ave_time = gemm_bias_add_silu_fp16(gemm_args, StreamConfig{nullptr, time_kernel, 20, 50}); else ave_time = @@ -283,10 +285,12 @@ int main(int argc, char* argv[]) } }; if(op_type == 0) - run_elementwise(ck::impl::AddActivation{}); + run_elementwise(Add{}); else if(op_type == 1) - run_elementwise(ck::impl::AddActivation{}); + run_elementwise(ck::impl::AddActivation{}); else if(op_type == 2) + run_elementwise(ck::impl::AddActivation{}); + else if(op_type == 3) run_elementwise(ck::impl::AddActivation{}); else run_elementwise(ck::impl::AddActivation{});