MLIR 0부 - MLIR 설치하기
MLIR 설치는 상당히 골치 아픈 일이 될 수 있으므로, 여러 가지 방법으로 설치하는 방법에 관한 몇 가지 참고 사항을 정리했습니다.
- Homebrew로 설치하기 (macOS)
- Apt 사용하기 (Ubuntu 22.04)
llvm.sh사용하기- 미리 컴파일된 패키지
- 소스에서 빌드하기 (macOS)
- 소스에서 빌드하기 (Ubuntu 22.04)
- Wheel로 설치하기 (pip)
- Wheel로 설치하기 (Poetry)
- Wheel로 설치하기 (uv)
- Conda 사용하기
- Docker 사용
- MLIR Python 바인딩 설치하기
Homebrew로 설치 (macOS)
macOS에서 MLIR을 설치하는 가장 간단한 방법은 Homebrew를 이용하는 것입니다. 이렇게 하면 MLIR 도구와 라이브러리가 포함된 최신 안정 버전의 LLVM이 설치됩니다.
brew install llvm@20
Apt 사용 (Ubuntu 22.04)
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 환경에서는 동작하지 않을 수도 있습니다.
-
LLVM 릴리스 페이지에서 알맞은 사전 컴파일 릴리스 패키지를 내려받으십시오. 다음과 같은 이름의 파일을 찾으십시오.
mlir-<version>.src.tar.xz(예:mlir-20.1.4.src.tar.xz)
-
원하는 위치에 압축을 푸십시오.
tar xf mlir-<version>.src.tar.xz
-
바이너리를 PATH에 추가하십시오. 다음 중 하나를 선택할 수 있습니다:
- 압축을 푼 디렉터리를 시스템 위치로 옮기십시오:
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)
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 22.04)
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
Wheel에서 설치 (pip)
Python 사용자는 별도 저장소에서 사전 빌드된 wheel을 받을 수 있습니다. Python 프로젝트에서 MLIR을 시작하는 가장 쉬운 방법입니다.
pip install mlir -f https://github.com/makslevental/mlir-wheels/releases/expanded_assets/latest
Wheel에서 설치 (Poetry)
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
Wheel에서 설치 (uv)
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 사용하기
Conda로 MLIR과 Python 바인딩을 모두 설치할 수 있습니다.
conda install conda-forge::mlir
Docker 사용하기
컨테이너 환경을 선호하는 사용자를 위해 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를 가져오려면 다음과 같이 합니다.
docker pull ghcr.io/sdiehl/docker-mlir-cuda:mlir20-cuda-ubuntu24.04
MLIR Python 바인딩 설치하기
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
9–13부에서는 tiny-mlir 동반 프로젝트를 사용하며, 이 프로젝트의 uv sync는 버전이 고정된 Python 3.12 환경과 그에 맞는 MLIR Python 바인딩을 설치합니다. 이 네이티브 CPU 예제들에는 LLVM을 따로 설치할 필요가 없습니다.