2025. 1. 12. 20:22ㆍMemorizing/Jetson
tvm은 딥러닝 컴파일러이다. tvm를 사용하기 위해선 먼저 설치를 해야하는데 아래의 링크를 참고해서 설치를 진행했다.
현재 Jetson Orin Nano, JetPack 6.1을 사용하고 있다.
https://tvm.apache.org/docs/install/from_source.html
Install from Source — tvm 0.19.dev0 documentation
Table of Contents Docs > Installing TVM > Install from Source Edit on GitHub Install from Source This page gives instructions on how to build and install the TVM package from source. Table of Contents Apache TVM requires the following dependencies: CMake (
tvm.apache.org
1. conda 가상환경을 만든다.
먼저 conda 가상 환경을 설치한 후, 아래의 코드를 실행한다.
2025.01.12 - [Memorizing/Jetson] - Jetson에서 Anaconda 설치하기
Jetson에서 Anaconda 설치하기
현재 Jetson Orin Nano JetPack 6.1을 사용하고있다.Jetson은 arm64 아키텍쳐이기 때문에 주의해서 설치를 해야한다.먼저, Anaconda 웹 페이지에서 회원가입을 한 후, Download를한다.버튼을 누르면 인증을 진행
gitdeep.tistory.com
# make sure to start with a fresh environment
conda env remove -n tvm-build-venv
# create the conda environment with build dependency
conda create -n tvm-build-venv -c conda-forge \
"llvmdev>=15" \
"cmake>=3.24" \
git \
python=3.11
# enter the build environment
conda activate tvm-build-venv
2. 빌드할 소스를 클론한다.
git clone --recursive https://github.com/apache/tvm tvm
3. CMake 환경을 구성한다.
cd tvm
rm -rf build && mkdir build && cd build
# Specify the build configuration via CMake options
cp ../cmake/config.cmake .
# controls default compilation flags (Candidates: Release, Debug, RelWithDebInfo)
echo "set(CMAKE_BUILD_TYPE RelWithDebInfo)" >> config.cmake
# LLVM is a must dependency for compiler end
echo "set(USE_LLVM \"llvm-config --ignore-libllvm --link-static\")" >> config.cmake
echo "set(HIDE_PRIVATE_SYMBOLS ON)" >> config.cmake
# GPU SDKs, turn on if needed
echo "set(USE_CUDA OFF)" >> config.cmake
echo "set(USE_METAL OFF)" >> config.cmake
echo "set(USE_VULKAN OFF)" >> config.cmake
echo "set(USE_OPENCL OFF)" >> config.cmake
# cuBLAS, cuDNN, cutlass support, turn on if needed
echo "set(USE_CUBLAS OFF)" >> config.cmake
echo "set(USE_CUDNN OFF)" >> config.cmake
echo "set(USE_CUTLASS OFF)" >> config.cmake
4. 소스를 빌드한다.
CUDA를 사용하기 위해 관련 설정을 해주었다. 그리고 빌드의 경량화를 위해 Ninja를 통해서 빌드했다.
cmake .. -G Ninja -DUSE_CUDA=ON -DUSE_CUDNN=ON -DUSE_TENSORRT=ON -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda -DTENSORRT_ROOT=$TENSORRT_HOME -DUSE_GTEST=OFF && cmake --build . --parallel 4
빌드에 성공하면 아래와 같이 두 가지 .so 파일이 생성된다.
-rwxrwxr-x 1 mingi mingi 4090648 Jan 12 19:24 libtvm_runtime.so
-rwxrwxr-x 1 mingi mingi 66993688 Jan 12 19:24 libtvm.so
그 후, 아래의 환경 변수 설정을 진행해준다.
export TVM_HOME=/home/mingi/workspace/tvm/
export PYTHONPATH=$TVM_HOME/python:$PYTHONPATH
그리고 설치 확인을 위해서 아래와 같이 실행했는데 에러가 발생했다.
python -c "import tvm; print(tvm.__file__)"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/mingi/workspace/tvm/python/tvm/__init__.py", line 26, in <module>
from ._ffi.base import TVMError, __version__, _RUNTIME_ONLY
File "/home/mingi/workspace/tvm/python/tvm/_ffi/__init__.py", line 28, in <module>
from .base import register_error
File "/home/mingi/workspace/tvm/python/tvm/_ffi/base.py", line 78, in <module>
_LIB, _LIB_NAME = _load_lib()
^^^^^^^^^^^
File "/home/mingi/workspace/tvm/python/tvm/_ffi/base.py", line 64, in _load_lib
lib = ctypes.CDLL(lib_path[0], ctypes.RTLD_GLOBAL)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/mingi/anaconda3/lib/python3.12/ctypes/__init__.py", line 379, in __init__
self._handle = _dlopen(self._name, mode)
^^^^^^^^^^^^^^^^^^^^^^^^^
OSError: /home/mingi/anaconda3/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /home/mingi/workspace/tvm/build/libtvm.so)
이 에러는 tvm에서 요구하는 c++의 버전과 현재 설치되어 있는 c++의 버전이 안 맞아서 생기는 문제라고한다. 아래의 명령어를 실행시켜주었다.
sudo apt-get update
5. 설치 확인
잘 설치되었는지 확인하기 위해 아래의 명령어를 실행시켜준다.
python -c "import tvm; print(tvm._ffi.base._LIB)"
python -c "import tvm; print('\n'.join(f'{k}: {v}' for k, v in tvm.support.libinfo().items()))"
python -c "import tvm; print(tvm.metal().exist)"
python -c "import tvm; print(tvm.cuda().exist)"
python -c "import tvm; print(tvm.vulkan().exist)"
'Memorizing > Jetson' 카테고리의 다른 글
Jetson에서 Anaconda 설치하기 (0) | 2025.01.12 |
---|---|
IRuntime::deserializeCudaEngine: Error Code 1: Serialization (0) | 2025.01.06 |
JetPack6에서 Deepsort 사용하기 (1) | 2025.01.04 |
JetPack6에서 Opencv 빌드하기 (0) | 2025.01.04 |
JetPack 5.1.1 에서 Jetpack 6 설치하기 (0) | 2025.01.03 |