TVM VTAに関してのメモ書き。2021/4/29現在の情報。
Q. どのボードを選ぶべきか A. PYNQ-Z1がおすすめ
現時点VTAのInstallページには、PYNQ-Z1とDE10-Nanoのセットアップ手順が書かれている。
しかしDE10-Nanoは手元で試した限り、LinuxのCMA(Contiguous Memory Allocation)周りが正しく設定されていないようで動かなかった。 TVM Community Discussionを見ても動かない旨の報告がある。
一方PYNQ-Z1は、セットアップ手順通りに進めれば動いた。 VTAをとりあえず試してみたいという目的であれば、PYNQ-Z1がおすすめ。
mainブランチで動かない可能性がある 最近VTA周りの変更が多く、かつVTAのテストケースが貧弱のため、mainブランチでVTAが動かない事がよくある。 手順通りに進めてもエラーが出るのであれば、古いコミットを試すとよい。
Terasic DE10-NanoにTVM VTAのRPC Serverを導入したので作業メモ。
DE10-Nanoセットアップに従う
必要なもの DE10-Nano microSDカード 8GB以上推奨、microSDXC非対応な気がするので注意 microUSBケーブル シリアル通信に必要 LANケーブル ネットワークに繋ぐのに必要 DE10-Nanoのセットアップ まずはTerasicのページからAngstrom Linuxイメージをダウンロードする。
de10-nano-image-Angstrom-v2016.12.socfpga-sdimg.2017.03.31.tgz ダウンロードしたファイルをmicroSDに書き込む。Win32DiskImagerを使用。
DE10-Nanoに電源ケーブルを接続、microSDをDE10-Nanoに挿入、microUSBケーブルでDE10-NanoとPCを接続する。
PC上でターミナルエミュレータでDE10-Nanoに接続する。TeraTermを使用。
ユーザ名:root、パスワードなしでログインする。
以降はDE10-Nano上で実行する。
パッケージ導入 システムパッケージをアップデートし、必要なパッケージを導入する。
opkg update opkg upgrade opkg install cmake coreutils Python導入 Angstrom Linuxに入っているPythonは古すぎるので、Pythonソースビルドする。
ソースコードをダウンロードし、ビルド、インストールする。
mkdir ~/workspace cd ~/workspace curl -O https://www.python.org/ftp/python/3.8.8/Python-3.8.8.tgz tar xvf Python-3.8.8.tgz cd Python-3.8.8 ./configure make make install python、python3コマンドのシンボリックリンクを導入したPythonに置き換える。
rm /usr/bin/python ln -s /usr/local/bin/python3....
CAUTION 少し古い情報(2020/9頃)のため、2021/01/16時点では不要な情報の可能性が高いが、記録のために残しておく。
ビルド sudo apt-get update sudo apt-get install -y python3 python3-dev python3-setuptools gcc libtinfo-dev zlib1g-dev build-essential cmake libedit-dev libxml2-dev ninja-build cd ~/workspace git clone https://github.com/llvm/llvm-project.git cd llvm-project && git checkout llvmorg-10.0.1 && cd .. TVMとONNX-MLIRを共存するために、ONNX-MLIRが依存するLLVM@1d01fc(未リリースのバージョン)を使ってTVMをビルドすると、ビルドエラーが発生する。(後述)
cd ~/workspace git clone --recursive https://github.com/apache/incubator-tvm tvm mkdir build cp cmake/config.cmake build cd build vim config.cmake # 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....