diff options
Diffstat (limited to 'examples/gemm_tuner/README.md')
-rw-r--r-- | examples/gemm_tuner/README.md | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/examples/gemm_tuner/README.md b/examples/gemm_tuner/README.md index 73bddc9239..aae803eabb 100644 --- a/examples/gemm_tuner/README.md +++ b/examples/gemm_tuner/README.md @@ -9,7 +9,7 @@ The details of these strategies can be found in the documentations of the corres **CLGEMMMatrixMultiplyReshapedOnlyRHSKernel**. The Tuner consists of 2 scripts and 3 binaries: -* benchmark_gemm_examples.sh and GemmTuner.py under examples/gemm_tuner, and +* cl_gemm_benchmark and GemmTuner.py under examples/gemm_tuner, and * benchmark_cl_gemm_native, benchmark_cl_gemm_reshaped_rhs_only and benchmark_cl_gemm_reshaped under build/tests/gemm_tuner (you'll need to build the library first) @@ -42,7 +42,7 @@ what kernel and subsequently what configurations for that kernels are the most p ### Step2: Push relevant files to the target device All the files that need to be present on the target device are: -* benchmark script: \<ComputeLibrary\>/examples/gemm_tuner/benchmark_gemm_examples.sh +* benchmark script: \<ComputeLibrary\>/examples/gemm_tuner/cl_gemm_benchmark * shapes and configs csv files: gemm_shapes.csv, gemm_configs_native.csv, gemm_configs_reshaped_only_rhs.csv, gemm_configs_reshaped.csv * Example benchmark binaries: \<ComputeLibrary\>/build/tests/gemm_tuner/benchmark_cl_gemm* @@ -51,15 +51,25 @@ With these files on device, we can collect benchmark data using the script. Assu to a folder called *gemm_tuner*. While logged onto our device: ``` # Native -./benchmark_gemm_examples.sh -s native -e ./gemm_tuner -g ./gemm_shapes.csv -c ./gemm_configs_native.csv -o results/native +./cl_gemm_benchmark -s native -e ./gemm_tuner -g ./gemm_shapes.csv -c ./gemm_configs_native.csv -o results/native # Reshaped Only RHS -./benchmark_gemm_examples.sh -s reshaped_rhs_only -e ./gemm_tuner -g ./gemm_shapes.csv -c ./gemm_configs_reshaped_only_rhs.csv -o results/reshaped_only_rhs +./cl_gemm_benchmark -s reshaped_rhs_only -e ./gemm_tuner -g ./gemm_shapes.csv -c ./gemm_configs_reshaped_only_rhs.csv -o results/reshaped_only_rhs # Reshaped -./benchmark_gemm_examples.sh -s reshaped -e ./gemm_tuner -g ./gemm_shapes.csv -c ./gemm_configs_reshaped.csv -o results/reshaped +./cl_gemm_benchmark -s reshaped -e ./gemm_tuner -g ./gemm_shapes.csv -c ./gemm_configs_reshaped.csv -o results/reshaped ``` You can repeat the 3 commands above to have a bit redundancy in your benchmark data (as you can imagine, measurement is noisy), but you may need to change the output folder for each repeat +It is also possible to split the benchmark phase among different platforms using the **-i** and **-n** options to specificy the starting experiment and the number of benchmark to run. + +# Reshaped benchmark on 3 different platforms +## Platform 1 +./cl_gemm_benchmark -s reshaped -e ./gemm_tuner -g ./gemm_shapes.csv -c ./gemm_configs_reshaped.csv -o results/reshaped -i 0 -n 8 +## Platform 2 +./cl_gemm_benchmark -s reshaped -e ./gemm_tuner -g ./gemm_shapes.csv -c ./gemm_configs_reshaped.csv -o results/reshaped -i 8 -n 8 +## Platform 3 +./cl_gemm_benchmark -s reshaped -e ./gemm_tuner -g ./gemm_shapes.csv -c ./gemm_configs_reshaped.csv -o results/reshaped -i 16 -n 8 + ### Step4: Generate the heuristics 1. After benchmarking, we pull the benchmark data, the *results* folder, from the target device to our host machine 2. We use the GemmTuner.py script to give us the heuristics @@ -77,7 +87,7 @@ passing a lower value to *-t \<tolerance\>* to the GemmTuner.py script. * Android or Linux OS * Bash shell * Built Compute Library with benchmark examples binaries - * benchmark_gemm_examples.sh script + * cl_gemm_benchmark script * gemm shape file A csv file containing the **GEMMParam search list**. This is the list of GEMMParams/gemm shapes that we're @@ -202,13 +212,13 @@ passing a lower value to *-t \<tolerance\>* to the GemmTuner.py script. ## Usage The usage of the 2 scripts: -1. benchmark_gemm_examples.sh +1. cl_gemm_benchmark - Run the shell script (**benchmark_gemm_examples.sh**) on your **target device**. Note that all the built benchmark + Run the shell script (**cl_gemm_benchmark**) on your **target device**. Note that all the built benchmark examples: build/tests/gemm_tuner/benchmark_cl_gemm*, have to be present on your target device prior to running. The benchmark results will be saved to json files in an output directory. ``` - Usage: benchmark_gemm_examples.sh [-h] -s \<strategy\> -e \<example_binary_dir\> -g \<gemm_shape_file\> + Usage: cl_gemm_benchmark [-h] -s \<strategy\> -e \<example_binary_dir\> -g \<gemm_shape_file\> -c \<gemm_config_file\> [-d \<data_type\>] [-o \<out_dir\>] Options: @@ -265,4 +275,4 @@ The usage of the 2 scripts: milliseconds. Recommended value: <= 0.1 ms -D, --debug Enable script debugging output - ```
\ No newline at end of file + ``` |