From 8902ae7bb705989e9cb025be9e36476057777e8b Mon Sep 17 00:00:00 2001
From: Mu Li <mli@amazon.com>
Date: Wed, 24 Jan 2018 14:00:08 -0800
Subject: [PATCH] Update cross_compilation_and_rpc.py (#816)

---
 .../deployment/cross_compilation_and_rpc.py   | 40 ++++++++++++++-----
 1 file changed, 31 insertions(+), 9 deletions(-)

diff --git a/tutorials/deployment/cross_compilation_and_rpc.py b/tutorials/deployment/cross_compilation_and_rpc.py
index bfd77f287..b31263f9e 100644
--- a/tutorials/deployment/cross_compilation_and_rpc.py
+++ b/tutorials/deployment/cross_compilation_and_rpc.py
@@ -14,11 +14,6 @@ the device in order to save time and space.
 In this tutorial, I will take Raspberry Pi as our target platform
 for example.
 """
-from __future__ import absolute_import, print_function
-
-import tvm
-import numpy as np
-from tvm.contrib import rpc, util
 
 ######################################################################
 # Build TVM Runtime on Device
@@ -27,6 +22,12 @@ from tvm.contrib import rpc, util
 # There're some prerequisites: similar as compiling TVM on your
 # local machine, we need build runtime on remote device.
 #
+# .. note::
+# 
+#   All instructions in both this section and next section should be 
+#   executed on the target device, e.g. Raspberry Pi. And we assume it 
+#   has Linux running. 
+# 
 # To get started, clone tvm repo from github. It is important to clone
 # the submodules along, with --recursive option (Assuming you are in
 # your home directory):
@@ -106,8 +107,19 @@ server = rpc.Server(host='0.0.0.0', port=9090, use_popen=True)
 ######################################################################
 # Declare and Cross Compile Kernel on Local Machine
 # -------------------------------------------------
-# Here we will declare a simple kernel with TVM on the local machine:
 #
+# .. note::
+#
+#   Now we back to the local machine, which has a full TVM installed. 
+#
+# Here we will declare a simple kernel with TVM on the local machine:
+
+from __future__ import absolute_import, print_function
+
+import tvm
+import numpy as np
+from tvm.contrib import rpc, util
+
 n = tvm.convert(1024)
 A = tvm.placeholder((n,), name='A')
 B = tvm.compute(A.shape, lambda *i: A(*i) + 1.0, name='B')
@@ -136,7 +148,8 @@ f.save(path)
 #   Pi. Here we use :code:`'llvm'` directly to make the tutorial runable.
 #
 #   Usually, you can query the target by execute :code:`gcc -v` on your
-#   device, although it may be still a loose configuration.
+#   device, and look for the line starting with :code:`Target:` 
+#   (Though it may be still a loose configuration.)
 #
 #   Besides :code:`-target`, you can also set other compilation options
 #   like:
@@ -171,9 +184,15 @@ f.save(path)
 # Run CPU Kernel Remotely by RPC
 # ------------------------------
 # Here we will show you how to run the kernel on the remote device:
+#
+# .. note:: 
+#    In order to have this tutorial runs locally to build the nice HTML, we 
+#    start a RPC server on the local machine. You can ignore it if you already 
+#    started the server on the target device. And then change host IP properly.
 
-# replace host with the ip address of your device
-host = '0.0.0.0'
+# Can be ignored if you already started the RPC server 
+server = rpc.Server(host='0.0.0.0', port=9090, use_popen=True) 
+host = '0.0.0.0'  # Change to your target device IP 
 port = 9090
 # connect the remote device
 remote = rpc.connect(host, port)
@@ -213,9 +232,12 @@ print('%g secs/op' % cost)
 # on remote compiler to re-link them.
 #
 # .. note::
+#
 #    Raspberry Pi does not support OpenCL, the following code is tested on
 #    Firefly-RK3399. The target_host should be 'llvm -target=aarch64-linux-gnu'.
 #    But here we set 'llvm' to enable this tutorial to run locally.
+#
+#    Also we need to build the runtime with the flag `USE_OPENCL=1`. 
 
 # build kernel (different from cpu, we need bind axis for OpenCL)
 s = tvm.create_schedule(B.op)
-- 
GitLab