blob: ee3ea8cc2e98bba406a151ac92a5cbba5583eb49 [file] [log] [blame] [view]
<!--- Licensed to the Apache Software Foundation (ASF) under one -->
<!--- or more contributor license agreements. See the NOTICE file -->
<!--- distributed with this work for additional information -->
<!--- regarding copyright ownership. The ASF licenses this file -->
<!--- to you under the Apache License, Version 2.0 (the -->
<!--- "License"); you may not use this file except in compliance -->
<!--- with the License. You may obtain a copy of the License at -->
<!--- http://www.apache.org/licenses/LICENSE-2.0 -->
<!--- Unless required by applicable law or agreed to in writing, -->
<!--- software distributed under the License is distributed on an -->
<!--- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->
<!--- KIND, either express or implied. See the License for the -->
<!--- specific language governing permissions and limitations -->
<!--- under the License. -->
# gotvm - Golang Frontend for TVM Runtime
This folder contain golang interface for TVM runtime. It brings TVM runtime to Golang.
- It enable c runtime api of tvm exposed to golang.
- It enables module loading (lib, graph and params) and inference operations.
## Installation
### Requirements
- go compiler (https://golang.org/) version 0.10 or above.
### Modules
- src
Module that generates golang package corresponding to the c runtime api exposed from tvm source tree.
This process build golang package _gotvm.a_
- samples
Sample golang reference application to inference through gotvm package.
### Build
Once the Requirements are installed
To build _gotvm_ package
```bash
make
```
To build and run internal tests
```bash
make tests
```
To build sample apps.
```bash
make samples
```
## Run
To Demonstrates sample TVM module compilation using python and deploy via golang.
```bash
./simple
```
To deploy a realtime module with lib, graph and param.
```bash
python3 gen_mobilenet_lib.py
./complex
```
To demonstrate go function closure conversion to packed function handle.
```bash
./pack_func_convert
```
To demonstrate a packed function handle given as an argument.
```bash
./pack_func_handle_arg
```
To register go function with runtime as a global function.
```bash
./pack_func_register
```
To demonstrate function closure passed as argument to a function call.
```bash
./pack_func_closure_arg
```
To demonstrate function closure returned from a packed function.
```bash
./pack_func_closure_return
```
## Documentation
gotvm.go is documented with sufficient information about gotvm package.
A html version documentation can be accessed by running below command after building runtime.
```bash
godoc -http=:6060 -goroot=./gopath
```
After above command try http://127.0.0.1:6060 from any browser.
Also please refer to the sample applications under sample folder.
## Docker
Docker setup may need below additions for dependencies and environment preparation.
Please refer ```docker/install/ubuntu_install_golang.sh``` for the packages dependencies.
go compiler 1.10 on ubuntu doesn't install on standard path, hence an explicit export may be needed as shown below.
```bash
export PATH="/usr/lib/go-1.10/bin:$PATH"
```