<!--- 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" ```