adstraw commented on code in PR #11283:
URL: https://github.com/apache/tvm/pull/11283#discussion_r872564209


##########
tests/python/contrib/test_hexagon/README.md:
##########
@@ -15,23 +15,123 @@
 <!--- specific language governing permissions and limitations -->
 <!--- under the License. -->
 
-Documents manual TE schedule to illustrate Hexagon operator slicing.
-
-High Level Notes:
-* Using float32 (for now) so that tests will pass on CPU
-* Using global storage scope (for now) which means "cache" reads and writes 
from global, to global
-* TIR is pending changes from the work-in-progress layout RFC
-  (https://github.com/apache/tvm-rfcs/pull/39)
-* TIR has been hand-edited for context and clarity
-  * Added C-style comments
-  * Changed variable names
-  * Added spacing and line breaks
-* Naming conventions
-  * Using input (instead of activation)
-  * Using filter (instead of weight, kernel)
-  * Using `k` to denote channel-out and `c` or `rc` (reduction channel) to 
denote channel-in
-  * Using `rh` and `rw` (reduction height / width) to denote filter height and 
width
-
-[Conv2d](test_conv2d_blocked.md)
-
-[Conv2d -> Conv2d](test_conv2d_conv2d.md)
\ No newline at end of file
+# Test TVM on Hexagon
+This document explains various pieces that are involved in testing TVM on an 
Android device which includes Hexagon DSP or Hexagon simulator.
+
+## What is HexagonLauncherRPC?
+HexagonLauncherRPC is a class to handle interactions with an Android phone 
which includes Hexagon DSP or Hexagon simulator to run a 
TVMModule(function/operation/graph) on Hexagon. HexagonLauncherRPC reuses 
[minRPC](https://github.com/apache/tvm/tree/main/src/runtime/minrpc) 
implementation to set up an RPC connection from host (your local machine) to 
Hexagon target, and it is passed through Android RPC server.
+
+## Build Required Tools/Libraries
+To build TVM for Hexagon and run tests you need to run multiple steps which 
includes preparing required tools, setup environment variables and build 
various versions of TVM. Alternatively, you can skip these instructions and use 
docker image which has pre-installed required tools. We highly recommend to use 
docker, specially if this is your first time working with Hexagon. For 
instructions on using docker image follow ["use hexagon docker 
image"](#use-hexagon-docker-image).
+
+- Build TVMRuntime library and C++ RPC server for Android.
+- Build minRPC server along with FastRPC for Hexagon.
+- Build TVM library with Hexagon support for host machine.
+- Build TVMRuntime library and RPC server for host machine.
+
+First, ensure to export Clang libraries to `LD_LIBRARY_PATH` and Hexagon 
toolchain to `HEXAGON_TOOLCHAIN`:
+```bash
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"path to `llvm-clang/lib` 
sub-directory"
+
+export HEXAGON_TOOLCHAIN="Path to Hexagon toolchain. It can be the Hexagon 
toolchain included in the SDK, for example 
`HEXAGON_SDK_PATH/tools/HEXAGON_Tools/x.y.z/Tools`.  The `x.y.z` in the path is 
the toolchain version number, which is specific to the version of the SDK."
+```
+
+First build Hexagon API application under `apps/hexagon_api`. This step will 
generate `tvm_rpc_android` and `libtvm_runtime.so` to run on Android. Also, it 
generates `libtvm_runtime.a` `libtvm_runtime.so`, `libhexagon_rpc_skel.so` and 
`libhexagon_rpc_sim.so` to run on Hexagon device or Hexagon simulator.
+
+**Note:** To get the most updated instructions, please take a look at 
[task_build_hexagon_api.sh](https://github.com/apache/tvm/blob/main/tests/scripts/task_build_hexagon_api.sh).
+
+```bash
+cd apps/hexagon_api
+mkdir build
+cd build
+cmake -DANDROID_ABI=arm64-v8a \
+        -DANDROID_PLATFORM=android-28 \
+        -DUSE_ANDROID_TOOLCHAIN="path to 
`android-ndk/build/cmake/android.toolchain.cmake` file" \
+        -DUSE_HEXAGON_ARCH=v65|v66|v68|v69 \
+        -DUSE_HEXAGON_SDK="path to Hexagon SDK" \
+        -DUSE_HEXAGON_TOOLCHAIN="path to Hexagon toolchain `Tools` 
sub-directory which explained above" \
+        -DUSE_OUTPUT_BINARY_DIR="path to `build/hexagon_api_output` which is a 
sub-directory of `tvm`" ..
+
+make -j2
+```

Review Comment:
   Yes, it's readable.  What I am suggesting is that we remove the inline bash 
script from the readme and simply link to task_build_hexagon_api.sh.  This way 
we don't have to encode and update the same thing twice:  once in the readme 
and again in the script.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to