여러 가지 방법으로 MLIR를 설치하는 방법에 대한 메모.
MLIR 설치는 정말 골칫거리일 수 있으니, 다양한 방법으로 설치하는 법에 대한 몇 가지 메모를 여기에 정리한다.
llvm.sh 사용macOS에서 MLIR를 설치하는 가장 간단한 방법은 Homebrew를 사용하는 것이다. 이 방법은 MLIR 도구와 라이브러리를 포함하는 최신 안정판 LLVM을 설치한다.
brew install llvm@20
Ubuntu 사용자의 경우, 공식 LLVM APT 저장소에서 MLIR용 미리 빌드된 패키지를 제공한다. 이 방법을 쓰면 필요한 모든 의존성이 포함된 올바르게 구성된 빌드를 받을 수 있다.
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
add-apt-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main"
apt-get update
apt-get install -y libmlir-20-dev mlir-20-tools
llvm.sh 사용LLVM 프로젝트는 APT 저장소를 자동으로 설정하고 LLVM/MLIR을 설치해주는 설치 스크립트를 제공한다. 이는 저장소 설정을 자동으로 처리해주기 때문에 Ubuntu/Debian 시스템에서 편리하게 사용할 수 있는 방법이다.
bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"
특정 버전의 LLVM을 설치하려면:
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 20
미리 컴파일된 Linux 바이너리를 내려받고 싶은 사용자를 위해 LLVM 프로젝트는 공식 릴리스 패키지를 제공한다. 특정 버전이 필요하거나 컴파일 시간을 피하고 싶을 때 유용하다. 일반적으로 이 패키지들은 best effort이며, 사용 중인 배포판 / glibc 구성과 맞지 않아 동작하지 않을 수도 있다.
* `mlir-<version>.src.tar.xz` (예: `mlir-20.1.4.src.tar.xz`)
tar xf mlir-<version>.src.tar.xz
* 추출한 디렉터리를 시스템 위치로 옮긴다:
sudo mv mlir-<version>.src /usr/local/mlir
echo 'export PATH=/usr/local/mlir/bin:$PATH' >> ~/.bashrc
* 또는 현재 위치를 PATH에 추가한다:
echo 'export PATH=/path/to/mlir-<version>.src/bin:$PATH' >> ~/.bashrc
mlir-opt --version
참고: 미리 컴파일된 패키지는 빌드 시간을 절약해주지만, 소스에서 커스텀 빌드할 때 얻을 수 있는 모든 최적화를 포함하지 않을 수 있다.
macOS에서 소스로 빌드하면 빌드 구성을 가장 세밀하게 제어할 수 있고 최신 기능도 확보할 수 있다. 이 방법은 더 많은 시간과 디스크 공간을 요구하지만, 가장 유연하다.
brew install cmake cache ninja
git clone https://github.com/llvm/llvm-project.git
mkdir llvm-project/build
cd llvm-project/build
cmake -G Ninja ../llvm \
-DLLVM_ENABLE_PROJECTS=mlir \
-DLLVM_BUILD_EXAMPLES=ON \
-DLLVM_TARGETS_TO_BUILD="Native" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \
-DLLVM_CCACHE_BUILD=ON
cmake --build . -t mlir-opt mlir-translate mlir-transform-opt mlir-runner
cmake --build . -t install
Ubuntu에서 소스로 빌드하면 MLIR 빌드를 완전히 커스터마이즈할 수 있다. 이 방법은 MLIR을 수정해야 하거나 특정 최적화가 활성화되어 있는지 확실히 하고 싶은 개발자에게 권장된다.
sudo apt-get install clang lld
git clone https://github.com/llvm/llvm-project.git
mkdir llvm-project/build
cd llvm-project/build
cmake -G Ninja ../llvm \
-DLLVM_ENABLE_PROJECTS=mlir \
-DLLVM_BUILD_EXAMPLES=ON \
-DLLVM_TARGETS_TO_BUILD="Native" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \
-DLLVM_CCACHE_BUILD=ON
cmake --build . -t mlir-opt mlir-translate mlir-transform-opt mlir-runner
cmake --build . -t install
Python 사용자의 경우, 커스텀 저장소를 통해 미리 빌드된 wheel을 사용할 수 있다. Python 프로젝트에서 MLIR을 시작하기 가장 쉬운 방법이다.
pip install mlir -f https://github.com/makslevental/mlir-wheels/releases/expanded_assets/latest
Poetry 사용자는 커스텀 소스 저장소를 통해 MLIR을 설치할 수 있다. 이 방법은 Python 의존성 관리와 잘 통합되며 버전 제어 기능을 제공한다.
[tool.poetry.dependencies]
python = "^3.12"
mlir = { version = "latest", source = "mlir-wheels"}
[[tool.poetry.source]]
name = "mlir-wheels"
url = "https://github.com/makslevental/mlir-wheels/releases/expanded_assets/latest"
priority = "supplemental"
그 다음 동작 여부를 확인하려면:
poetry run mlir-opt --version
uv 패키지 매니저는 MLIR wheel을 설치하는 현대적인 대안을 제공한다. 이 방법은 특히 Python 프로젝트에서 빠르고 효율적이다.
uv add mlir --index mlir=https://github.com/makslevental/mlir-wheels/releases/expanded_assets/latest
uv 사용자의 경우 pyproject.toml 파일에 의존성을 지정할 수도 있다. 이 접근은 프로젝트 의존성을 선언적으로 관리하는 방법을 제공한다. pyproject.toml 파일에 다음을 추가하라:
[project]
dependencies = ["mlir"]
[tool.uv.sources]
mlir = { index = "mlir-wheels" }
[[tool.uv.index]]
name = "mlir-wheels"
url = "https://github.com/makslevental/mlir-wheels/releases/expanded_assets/latest"
그 다음 동작 여부를 확인하려면:
uv run mlir-opt --version
Conda는 MLIR과 Python 바인딩을 모두 설치하는 데 사용할 수 있다.
conda install conda-forge::mlir
컨테이너화된 환경을 선호하는 사용자를 위해, MLIR이 미리 설치된 사전 빌드 Docker 이미지를 여기에서 유지보수하고 있다: https://github.com/sdiehl/docker-mlir-cuda. 이 이미지들은 CUDA 버전과 비-CUDA 버전이 모두 있으며, Ubuntu 22.04와 24.04를 모두 지원한다.
# Ubuntu 24.04 Images
# With CUDA
docker pull ghcr.io/sdiehl/docker-mlir-cuda:mlir20-cuda-ubuntu24.04
docker pull ghcr.io/sdiehl/docker-mlir-cuda:mlir19-cuda-ubuntu24.04
# Without CUDA
docker pull ghcr.io/sdiehl/docker-mlir-cuda:mlir20-ubuntu24.04
docker pull ghcr.io/sdiehl/docker-mlir-cuda:mlir19-ubuntu24.04
# Ubuntu 22.04 Images
# With CUDA
docker pull ghcr.io/sdiehl/docker-mlir-cuda:mlir20-cuda-ubuntu22.04
docker pull ghcr.io/sdiehl/docker-mlir-cuda:mlir19-cuda-ubuntu22.04
# Without CUDA
docker pull ghcr.io/sdiehl/docker-mlir-cuda:mlir20-ubuntu22.04
docker pull ghcr.io/sdiehl/docker-mlir-cuda:mlir19-ubuntu22.04
이 이미지들 중 아무 것이나 대화형으로 실행하려면:
docker run -it ghcr.io/sdiehl/docker-mlir-cuda:<tag> bash
예를 들어, Ubuntu 24.04용 CUDA 활성화 MLIR 20.1.4를 실행하려면:
docker run -it ghcr.io/sdiehl/docker-mlir-cuda:mlir20-cuda-ubuntu24.04 bash
또한 이 이미지들을 자신의 Dockerfile에서 베이스로 사용할 수도 있다:
FROM ghcr.io/sdiehl/docker-mlir-cuda:<tag>
<tag>를 원하는 버전으로 바꿔라(예: mlir20-cuda-ubuntu24.04). 예를 들어 Ubuntu 24.04용 CUDA 활성화 MLIR 20.1.4를 pull하려면:
docker pull ghcr.io/sdiehl/docker-mlir-cuda:mlir20-cuda-ubuntu24.04
MLIR Python 바인딩은 별도의 패키지이며, 선호하는 Python 패키지 매니저로 설치할 수 있다. mlir-wheels 인덱스를(위에서 설명한 대로) 설치한 뒤, 다음 명령 중 하나로 Python 바인딩을 설치할 수 있다:
pip install mlir-python-bindings -f https://github.com/makslevental/mlir-wheels/releases/expanded_assets/latest
poetry add mlir-python-bindings
uv add mlir --index mlir=https://github.com/makslevental/mlir-wheels/releases/expanded_assets/latest
conda install conda-forge::mlir-python-bindings
이게 동작하지 않으면, DMLIR_ENABLE_BINDINGS_PYTHON 플래그를 사용해 LLVM 소스 트리 내부에서 소스로 빌드해야 한다.
sudo apt-get install -y \
bash-completion \
ca-certificates \
ccache \
clang \
cmake \
cmake-curses-gui \
git \
lld \
man-db \
ninja-build \
pybind11-dev \
python3 \
python3-numpy \
python3-pybind11 \
python3-yaml \
unzip \
wget \
xz-utils
git clone https://github.com/wjakob/nanobind && \
cd nanobind && \
git submodule update --init --recursive && \
cmake \
-G Ninja \
-B build \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_INSTALL_PREFIX=$HOME/usr && \
cmake --build build --target install
cmake llvm \
-G Ninja \
-B build \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_PREFIX_PATH=$HOME/usr \
-DLLVM_BUILD_EXAMPLES=On \
-DLLVM_TARGETS_TO_BUILD="Native" \
-DLLVM_CCACHE_BUILD=On \
-DLLVM_CCACHE_DIR=$HOME/ccache \
-DLLVM_ENABLE_ASSERTIONS=On \
-DLLVM_ENABLE_LLD=On \
-DLLVM_ENABLE_PROJECTS="mlir;clang;clang-tools-extra" \
-DLLVM_USE_SPLIT_DWARF=On \
-DMLIR_ENABLE_BINDINGS_PYTHON=On \
-DPython3_EXECUTABLE=/usr/bin/python3 \ # change this to your python executable
-DMLIR_INCLUDE_INTEGRATION_TESTS=On
cmake --build build -t mlir-opt mlir-translate mlir-transform-opt mlir-runner
cmake --build build -t install
바인딩은 다음 위치에 빌드된다:
build/tools/mlir/python_packages/mlir_core/mlir
그 다음 다음 setup.py로 패키징할 수 있다:
cd build/tools/mlir/python_packages/mlir_core
python setup.py bdist_wheel
그리고 다음으로 설치한다:
pip install dist/mlir_core-*.whl
또는 PYTHONPATH에 수동으로 추가할 수도 있다. $HOME를 MLIR 소스 트리를 빌드한 위치로 조정하라.
export PYTHONPATH=$PYTHONPATH:$HOME/build/tools/mlir/python_packages/mlir_core