Skip to content

Commit

Permalink
fix conflict
Browse files Browse the repository at this point in the history
  • Loading branch information
alter-xp committed May 10, 2021
2 parents 302a7c8 + 4c1a6aa commit e255694
Show file tree
Hide file tree
Showing 399 changed files with 16,038 additions and 4,875 deletions.
4 changes: 4 additions & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,12 @@ We do encourage everyone to work anything they are interested in.
- [Marisa Kirisame](https://github.com/MarisaKirisame): @MarisaKirisame - relay
- [Wuwei Lin](https://github.com/vinx13): @vinx13 - relay, topi
- [Yizhi Liu](https://github.com/yzhliu) (PMC): @yzhliu - jvm, topi, relay
- [Steven Lyubomirsky](https://github.com/slyubomirsky): @slyubomirsky - relay
- [Hao Lu](https://github.com/hlu1): @hlu1 - nnpack, frontends
- [Masahiro Masuda](https://github.com/masahi) (PMC): @masahi - topi, relay
- [Thierry Moreau](https://github.com/tmoreau89) (PMC): @tmoreau89 - vta
- [Kazutaka Morita](https://github.com/kazum): @kazum - frontends, opencl
- [Leandro Nunes](https://github.com/leandron): @leandron - tvmc
- [Krzysztof Parzyszek](https://github.com/kparzysz-quic): @kparzysz-quic - hexagon, llvm
- [Andrew Reusch](https://github.com/areusch): @areusch - runtime, µTVM
- [Jared Roesch](https://github.com/jroesch) (PMC): @jroesch - relay
Expand Down Expand Up @@ -111,6 +113,7 @@ We do encourage everyone to work anything they are interested in.
- [Wuwei Lin](https://github.com/vinx13): @vinx13
- [Andrew Liu](https://github.com/hypercubestart): @hypercubestart
- [Henry Liu](https://github.com/optima2005): @optima2005
- [Xin Liu](https://github.com/Meteorix): @Meteorix
- [Steven Lyubomirsky](https://github.com/slyubomirsky): @slyubomirsky
- [Masahiro Masuda](https://github.com/masahi): @masahi
- [Sergey Mironov](https://github.com/grwlf): @grwlf
Expand All @@ -123,6 +126,7 @@ We do encourage everyone to work anything they are interested in.
- [Pariksheet Pinjari](https://github.com/PariksheetPinjari909): @PariksheetPinjari909
- [Josh Pollock](https://github.com/joshpoll): @joshpoll
- [Jared Roesch](https://github.com/jroesch): @jroesch
- [Giuseppe Rossini](https://github.com/giuseros): @giuseros
- [Andrew Reusch](https://github.com/areusch): @areusch
- [Dmitriy Smirnov](https://github.com/d-smirnov): @d-smirnov
- [Siva](https://github.com/srkreddy1238): @srkreddy1238
Expand Down
2 changes: 1 addition & 1 deletion Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ ci_gpu = "tlcpack/ci-gpu:v0.72"
ci_cpu = "tlcpack/ci-cpu:v0.73"
ci_wasm = "tlcpack/ci-wasm:v0.70"
ci_i386 = "tlcpack/ci-i386:v0.72-t0"
ci_qemu = "tlcpack/ci-qemu:v0.03"
ci_qemu = "tlcpack/ci-qemu:v0.04"
ci_arm = "tlcpack/ci-arm:v0.03"
// <--- End of regex-scanned config.

Expand Down
2 changes: 1 addition & 1 deletion apps/benchmark/arm_cpu_imagenet_bench.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def evaluate_network(network, target, target_host, repeat):
help="The model of the test device. If your device is not listed in "
"the choices list, pick the most similar one as argument.",
)
parser.add_argument("--host", type=str, default="localhost")
parser.add_argument("--host", type=str, default="127.0.0.1")
parser.add_argument("--port", type=int, default=9190)
parser.add_argument("--rpc-key", type=str, required=True)
parser.add_argument("--repeat", type=int, default=10)
Expand Down
2 changes: 1 addition & 1 deletion apps/benchmark/mobile_gpu_imagenet_bench.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def evaluate_network(network, target, target_host, dtype, repeat):
help="The model of the test device. If your device is not listed in "
"the choices list, pick the most similar one as argument.",
)
parser.add_argument("--host", type=str, default="localhost")
parser.add_argument("--host", type=str, default="127.0.0.1")
parser.add_argument("--port", type=int, default=9190)
parser.add_argument("--rpc-key", type=str, required=True)
parser.add_argument("--repeat", type=int, default=30)
Expand Down
6 changes: 3 additions & 3 deletions apps/bundle_deploy/bundle.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
#include <tvm/runtime/c_runtime_api.h>
#include <tvm/runtime/crt/crt.h>
#include <tvm/runtime/crt/graph_executor.h>
#include <tvm/runtime/crt/memory.h>
#include <tvm/runtime/crt/packed_func.h>
#include <tvm/runtime/crt/page_allocator.h>

#ifdef ENABLE_TVM_ABORT_BACKTRACE
#include "backtrace.h"
Expand Down Expand Up @@ -64,8 +64,8 @@ TVM_DLL void* tvm_runtime_create(const char* json_data, const char* params_data,
dev.device_id = device_id;

// declare pointers
TVM_CCALL(MemoryManagerCreate(&g_memory_manager, g_crt_memory, sizeof(g_crt_memory),
CRT_MEMORY_PAGE_SIZE_LOG2));
TVM_CCALL(PageMemoryManagerCreate(&g_memory_manager, g_crt_memory, sizeof(g_crt_memory),
CRT_MEMORY_PAGE_SIZE_LOG2));
TVM_CCALL(TVMInitializeRuntime());
TVMPackedFunc pf;
TVMArgs args = TVMArgs_Create(NULL, NULL, 0);
Expand Down
6 changes: 3 additions & 3 deletions apps/bundle_deploy/bundle_static.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
#include <stdlib.h>
#include <tvm/runtime/crt/crt.h>
#include <tvm/runtime/crt/graph_executor.h>
#include <tvm/runtime/crt/memory.h>
#include <tvm/runtime/crt/packed_func.h>
#include <tvm/runtime/crt/page_allocator.h>
#include <unistd.h>

#ifdef ENABLE_TVM_PLATFORM_ABORT_BACKTRACE
Expand Down Expand Up @@ -64,8 +64,8 @@ TVM_DLL void* tvm_runtime_create(const char* json_data, const char* params_data,
dev.device_id = device_id;

// get pointers
TVM_CCALL(MemoryManagerCreate(&g_memory_manager, g_crt_memory, sizeof(g_crt_memory),
CRT_MEMORY_PAGE_SIZE_LOG2));
TVM_CCALL(PageMemoryManagerCreate(&g_memory_manager, g_crt_memory, sizeof(g_crt_memory),
CRT_MEMORY_PAGE_SIZE_LOG2));
TVM_CCALL(TVMInitializeRuntime());
TVMPackedFunc pf;
TVMArgs args = TVMArgs_Create(NULL, NULL, 0);
Expand Down
3 changes: 3 additions & 0 deletions apps/bundle_deploy/crt_config/crt_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,7 @@
/*! Size of the global function registry, in bytes. */
#define TVM_CRT_GLOBAL_FUNC_REGISTRY_SIZE_BYTES 200

/*! Maximum packet size, in bytes, including the length header. */
#define TVM_CRT_MAX_PACKET_SIZE_BYTES 512

#endif // TVM_RUNTIME_CRT_CONFIG_H_
10 changes: 8 additions & 2 deletions apps/microtvm/reference-vm/zephyr/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,16 @@ This directory contains setup files for Zephyr virtual machine used for testing
that are supported by [Zephyr Project](https://zephyrproject.org/).

## VM Information for Developers
Zephyr VM is published under [tlcpack/microtvm-zephyr](https://app.vagrantup.com/tlcpack/boxes/microtvm-zephyr).
Zephyr VM is published under [tlcpack](https://app.vagrantup.com/tlcpack).
Here is a list of different release versions and their tools.

### [v0.0.4](https://app.vagrantup.com/tlcpack/boxes/microtvm-zephyr/versions/0.0.4)
### [microtvm-zephyr-2.5](https://app.vagrantup.com/tlcpack/boxes/microtvm-zephyr-2.5/versions/0.0.1)

- Zephyr [version 2.5.0]
- Zephyr SDK [version 0.12.3]
- nRFjProg [version 10.12.1]

### [microtvm-zephyr-2.4](https://app.vagrantup.com/tlcpack/boxes/microtvm-zephyr/versions/0.0.4)

- Zephyr [version 2.4.0]
- Zephyr SDK [version 0.11.3]
Expand Down
6 changes: 2 additions & 4 deletions apps/microtvm/reference-vm/zephyr/base-box/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,8 @@ pip3 install --user -U west
echo 'export PATH=$HOME/.local/bin:"$PATH"' >> ~/.profile
source ~/.profile
echo PATH=$PATH
west init --mr v2.5.0 ~/zephyr
cd ~/zephyr
west update
west zephyr-export
REPO_ROOT=$(git rev-parse --show-toplevel)
${REPO_ROOT}/docker/install/ubuntu_init_zephyr_project.sh ~/zephyr v2.5.0

cd ~
echo "Downloading zephyr SDK..."
Expand Down
3 changes: 2 additions & 1 deletion cmake/modules/StandaloneCrt.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ if(USE_MICRO)
"src/runtime/crt/include *.h -> include"
"src/runtime/crt/common *.c -> src/runtime/crt/common"
"src/runtime/crt/graph_executor *.c -> src/runtime/crt/graph_executor"
"src/runtime/crt/aot_executor *.c -> src/runtime/crt/aot_executor"
"src/runtime/crt/graph_executor_module *.c -> src/runtime/crt/graph_executor_module"
"src/runtime/crt/host crt_config.h -> template/host"
"src/runtime/crt/host *.cc -> template/host"
Expand Down Expand Up @@ -97,7 +98,7 @@ if(USE_MICRO)
set(make_quiet )
endif(${VERBOSE})

list(APPEND crt_libraries memory graph_executor utvm_rpc_server utvm_rpc_common common) # NOTE: listed in link order.
list(APPEND crt_libraries memory graph_executor aot_executor utvm_rpc_server utvm_rpc_common common) # NOTE: listed in link order.
foreach(crt_lib_name IN LISTS crt_libraries)
list(APPEND crt_library_paths "host_standalone_crt/lib${crt_lib_name}.a")
endforeach()
Expand Down
11 changes: 10 additions & 1 deletion cmake/modules/VTA.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,12 @@ elseif(PYTHON)
# Rules for Pynq v2.4
find_library(__cma_lib NAMES cma PATH /usr/lib)
elseif(${VTA_TARGET} STREQUAL "de10nano") # DE10-Nano rules
file(GLOB FPGA_RUNTIME_SRCS ${VTA_HW_PATH}/src/de10nano/*.cc ${VTA_HW_PATH}/src/*.cc)
file(GLOB DE10_FPGA_RUNTIME_SRCS ${VTA_HW_PATH}/src/de10nano/*.cc ${VTA_HW_PATH}/src/*.cc)
list(APPEND FPGA_RUNTIME_SRCS ${DE10_FPGA_RUNTIME_SRCS})
elseif(${VTA_TARGET} STREQUAL "intelfocl") # Intel OpenCL for FPGA rules
file(GLOB FOCL_SRC ${VTA_HW_PATH}/src/oclfpga/*.cc)
list(APPEND FPGA_RUNTIME_SRCS ${FOCL_SRC})
list(APPEND FPGA_RUNTIME_SRCS ${VTA_HW_PATH}/src/vmem/virtual_memory.cc ${VTA_HW_PATH}/src/vmem/virtual_memory.h)
endif()
# Target lib: vta
add_library(vta SHARED ${FPGA_RUNTIME_SRCS})
Expand All @@ -123,6 +128,10 @@ elseif(PYTHON)
target_include_directories(vta SYSTEM PUBLIC 3rdparty)
target_include_directories(vta SYSTEM PUBLIC
"/usr/local/intelFPGA_lite/18.1/embedded/ds-5/sw/gcc/arm-linux-gnueabihf/include")
elseif(${VTA_TARGET} STREQUAL "intelfocl") # Intel OpenCL for FPGA rules
target_include_directories(vta PUBLIC 3rdparty)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
target_link_libraries(vta -lOpenCL)
endif()
endif()

Expand Down
1 change: 1 addition & 0 deletions docker/Dockerfile.ci_qemu
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ RUN bash /install/ubuntu_install_qemu.sh

# Zephyr SDK deps
COPY install/ubuntu_install_zephyr.sh /install/ubuntu_install_zephyr.sh
COPY install/ubuntu_init_zephyr_project.sh /install/ubuntu_init_zephyr_project.sh
RUN bash /install/ubuntu_install_zephyr.sh
ENV ZEPHYR_BASE=/opt/zephyrproject/zephyr

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,10 @@
# specific language governing permissions and limitations
# under the License.

set -e
set -u
set -o pipefail
DOWNLOAD_DIR=$1
ZEPHYR_BRANCH=$2

# Script to setup additional python env.
#
# Use the following command to install the
# package to /workspace/.local, these additional
# packages will have precedence over the system packages.
#
# command: python3 -m pip install --user <package>==<version>
#
echo "Addtiional setup in" ${CI_IMAGE_NAME}

python3 -m pip install --user tlcpack-sphinx-addon==0.1.4 synr==0.3.0
west init --mr ${ZEPHYR_BRANCH} ${DOWNLOAD_DIR}
cd ${DOWNLOAD_DIR}
west update
west zephyr-export
4 changes: 2 additions & 2 deletions docker/install/ubuntu_install_arm_compute_lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ git clone "$repo_url" "$repo_dir"

cd "$repo_dir"

# pin version to v20.11
git checkout 49b8f90
# pin version to v21.02
git checkout "v21.02"

if [ "$architecture_type" != "aarch64" ]; then
build_type="cross_compile"
Expand Down
3 changes: 2 additions & 1 deletion docker/install/ubuntu_install_sbt.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ set -o pipefail
apt-get update && apt-get install -y apt-transport-https

# Install the necessary dependencies for sbt
echo "deb https://dl.bintray.com/sbt/debian /" | tee -a /etc/apt/sources.list.d/sbt.list
echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list
echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823

# Note: The settings in vta/hardware/chisel/project/build.properties
Expand Down
10 changes: 5 additions & 5 deletions docker/install/ubuntu_install_zephyr.sh
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,11 @@ pip3 install west
#EOF
#chmod a+x /usr/local/bin/west

west init --mr v2.5.0 /opt/zephyrproject
cd /opt/zephyrproject
west update
# Init ZephyrProject
ZEPHYR_PROJECT_PATH=/opt/zephyrproject
ZEPHYR_INIT_SCRIPT=$(find -name "ubuntu_init_zephyr_project.sh")
bash ${ZEPHYR_INIT_SCRIPT} ${ZEPHYR_PROJECT_PATH} v2.5-branch
cd ${ZEPHYR_PROJECT_PATH}

# This step is required because of the way docker/bash.sh works. It sets the user home directory to
# /workspace (or the TVM root, anyhow), and this means that zephyr expects a ~/.cache directory to be
Expand All @@ -67,8 +69,6 @@ west update
mkdir zephyr/.cache
chmod o+rwx zephyr/.cache

west zephyr-export

#/opt/west/bin/pip3 install -r /opt/zephyrproject/zephyr/scripts/requirements.txt
pip3 install -r /opt/zephyrproject/zephyr/scripts/requirements.txt

Expand Down
20 changes: 16 additions & 4 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,18 +47,31 @@
# General information about the project.
project = "tvm"
author = "Apache Software Foundation"
copyright = "2020, %s" % author
copyright = "2020 - 2021, %s" % author
github_doc_root = "https://github.com/apache/tvm/tree/main/docs/"

os.environ["TVM_BUILD_DOC"] = "1"


def git_describe_version(original_version):
"""Get git describe version."""
ver_py = os.path.join(curr_path, "..", "version.py")
libver = {"__file__": ver_py}
exec(compile(open(ver_py, "rb").read(), ver_py, "exec"), libver, libver)
_, gd_version = libver["git_describe_version"]()
if gd_version != original_version:
print("Use git describe based version %s" % gd_version)
return gd_version


# Version information.
import tvm
from tvm import topi
from tvm import te
from tvm import testing

version = tvm.__version__
release = tvm.__version__
version = git_describe_version(tvm.__version__)
release = version

# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones
Expand Down Expand Up @@ -245,7 +258,6 @@
"opt_gemm.py",
"opt_conv_cuda.py",
"opt_conv_tensorcore.py",
"opt_matmul_auto_tensorcore.py",
],
"autotvm": [
"tune_simple_template.py",
Expand Down
2 changes: 1 addition & 1 deletion docs/deploy/arm_compute_lib.rst
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ An example configuration for `test_config.json`:
{
"connection_type": "local",
"host": "localhost",
"host": "127.0.0.1",
"port": 9090,
"target": "llvm -mtriple=aarch64-linux-gnu -mattr=+neon",
"device_key": "",
Expand Down
6 changes: 6 additions & 0 deletions docs/deploy/tensorrt.rst
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,8 @@ Operator support
+------------------------+------------------------------------+
| nn.batch_norm | |
+------------------------+------------------------------------+
| nn.layer_norm | |
+------------------------+------------------------------------+
| nn.softmax | |
+------------------------+------------------------------------+
| nn.conv2d | |
Expand Down Expand Up @@ -253,6 +255,8 @@ Operator support
+------------------------+------------------------------------+
| nn.adaptive_avg_pool2d | |
+------------------------+------------------------------------+
| nn.batch_matmul | |
+------------------------+------------------------------------+
| clip | Requires TensorRT 5.1.5 or greater |
+------------------------+------------------------------------+
| nn.leaky_relu | Requires TensorRT 5.1.5 or greater |
Expand All @@ -277,6 +281,8 @@ Operator support
+------------------------+------------------------------------+
| nn.conv3d_transpose | Requires TensorRT 6.0.1 or greater |
+------------------------+------------------------------------+
| erf | Requires TensorRT 7.0.0 or greater |
+------------------------+------------------------------------+


Adding a new operator
Expand Down
6 changes: 3 additions & 3 deletions docs/dev/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ This page is organized as follows:
- The `Logical Architecture Components`_ section describes the logical components.
The sections after are specific guides focused on each logical component, organized
by the component's name.
- Feel free to also checkout the :ref:`dev-how-to` for useful development tips.
- Feel free to also check out the :ref:`dev-how-to` for useful development tips.

This guide provides a few complementary views of the architecture.
First, we review a single end-to-end compilation flow and discuss the key data structures and the transformations.
Expand All @@ -42,7 +42,7 @@ In this guide, we will study an example compilation flow in the compiler. The fi

- Import: The frontend component ingests a model into an IRModule, which contains a collection of functions that internally represent the model.
- Transformation: The compiler transforms an IRModule to another functionally equivalent or approximately
equivalent(e.g. in the case of quantization) IRModule. Many of the transformatons are target (backend) independent.
equivalent(e.g. in the case of quantization) IRModule. Many of the transformations are target (backend) independent.
We also allow target to affect the configuration of the transformation pipeline.
- Target Translation: The compiler translates(codegen) the IRModule to an executable format specified by the target.
The target translation result is encapsulated as a `runtime.Module` that can be exported, loaded, and executed on the target runtime environment.
Expand Down Expand Up @@ -103,7 +103,7 @@ Many low-level optimizations can be handled in the target phase by the LLVM, CUD
Search-space and Learning-based Transformations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The transformation passes we described so far are deterministic and rule-based. One design goal of the TVM stack is to support high-performance code optimizations for different hardware platforms. To do so, we will need to investigate as many optimizations choices as possible, including but not limited to, multi-dimensional tensor access, loop tiling behavior, special accelerator memory hierarchy, and threading.
The transformation passes we described so far are deterministic and rule-based. One design goal of the TVM stack is to support high-performance code optimizations for different hardware platforms. To do so, we will need to investigate as many optimization choices as possible, including but not limited to, multi-dimensional tensor access, loop tiling behavior, special accelerator memory hierarchy, and threading.

It is hard to define a heuristic to make all of the choices. Instead, we will take a search and learning-based approach.
We first define a collection of actions we can take to transform a program. Example actions include loop transformations, inlining,
Expand Down
6 changes: 3 additions & 3 deletions docs/dev/pass_infra.rst
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,7 @@ Python Frontend

Only some simple APIs are needed for the frontend side. For example, we can
provide users the following APIs to create and execute a pass (full
implementation is provided in `python/tvm/relay/transform.py`_ and
implementation is provided in `python/tvm/relay/transform/transform.py`_ and
`python/tvm/ir/transform.py`_). The backend
receives the information and decides which function it should use to create
a Pass object.
Expand Down Expand Up @@ -460,7 +460,7 @@ users so that they can customize their own pass or pass pipeline.

For all the passes that are implemented in the C++ backend, we provide
corresponding Python APIs in `python/tvm/ir/transform.py`_ and
`python/tvm/relay/transform.py`_, respectively. For instance,
`python/tvm/relay/transform/transform.py`_, respectively. For instance,
const folding has a Python API like the following:

.. code:: python
Expand Down Expand Up @@ -538,7 +538,7 @@ optimization pipeline and debug Relay and tir passes, please refer to the

.. _src/relay/pass/fold_constant.cc: https://github.com/apache/tvm/blob/main/src/relay/pass/fold_constant.cc

.. _python/tvm/relay/transform.py: https://github.com/apache/tvm/blob/main/python/tvm/relay/transform.py
.. _python/tvm/relay/transform/transform.py: https://github.com/apache/tvm/blob/main/python/tvm/relay/transform/transform.py

.. _include/tvm/relay/transform.h: https://github.com/apache/tvm/blob/main/include/tvm/relay/transform.h

Expand Down
Loading

0 comments on commit e255694

Please sign in to comment.