mirror of
https://github.com/ROCm/composable_kernel.git
synced 2026-07-12 02:05:50 +00:00
adding readme and add op
This commit is contained in:
27
example/66_gemm_bias_activation/README.md
Normal file
27
example/66_gemm_bias_activation/README.md
Normal file
@@ -0,0 +1,27 @@
|
||||
### Build
|
||||
```
|
||||
mkdir -p build
|
||||
cd build
|
||||
|
||||
sh ../script/cmake-ck-dev.sh ../ <arch> # you can replace this <arch> 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
|
||||
```
|
||||
@@ -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);
|
||||
|
||||
@@ -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<Add>(args, config);
|
||||
}
|
||||
|
||||
float gemm_bias_add_relu_fp16(const GemmBiasAddArgs& args, const StreamConfig& config)
|
||||
{
|
||||
return run_impl<ck::impl::AddActivation<Relu>>(args, config);
|
||||
|
||||
@@ -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<Gelu>{});
|
||||
run_elementwise(Add{});
|
||||
else if(op_type == 1)
|
||||
run_elementwise(ck::impl::AddActivation<Relu>{});
|
||||
run_elementwise(ck::impl::AddActivation<Gelu>{});
|
||||
else if(op_type == 2)
|
||||
run_elementwise(ck::impl::AddActivation<Relu>{});
|
||||
else if(op_type == 3)
|
||||
run_elementwise(ck::impl::AddActivation<Silu>{});
|
||||
else
|
||||
run_elementwise(ck::impl::AddActivation<Sigmoid>{});
|
||||
|
||||
Reference in New Issue
Block a user