adding readme and add op

This commit is contained in:
letaoqin
2024-10-12 12:49:46 +08:00
parent 244e313faa
commit 3b06519936
4 changed files with 44 additions and 6 deletions

View 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
```

View File

@@ -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);

View File

@@ -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);

View File

@@ -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>{});