Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

MLIR 0부 - MLIR 설치하기

MLIR 설치는 상당히 골치 아픈 일이 될 수 있으므로, 여러 가지 방법으로 설치하는 방법에 관한 몇 가지 참고 사항을 정리했습니다.

  1. Homebrew로 설치하기 (macOS)
  2. Apt 사용하기 (Ubuntu 22.04)
  3. llvm.sh 사용하기
  4. 미리 컴파일된 패키지
  5. 소스에서 빌드하기 (macOS)
  6. 소스에서 빌드하기 (Ubuntu 22.04)
  7. Wheel로 설치하기 (pip)
  8. Wheel로 설치하기 (Poetry)
  9. Wheel로 설치하기 (uv)
  10. Conda 사용하기
  11. Docker 사용
  12. 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 환경에서는 동작하지 않을 수도 있습니다.

  1. LLVM 릴리스 페이지에서 알맞은 사전 컴파일 릴리스 패키지를 내려받으십시오. 다음과 같은 이름의 파일을 찾으십시오.

    • mlir-<version>.src.tar.xz (예: mlir-20.1.4.src.tar.xz)
  2. 원하는 위치에 압축을 푸십시오.

tar xf mlir-<version>.src.tar.xz
  1. 바이너리를 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
    
  2. 설치를 확인하십시오:

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을 따로 설치할 필요가 없습니다.

시리즈 목차 · 다음: 1부 - MLIR 소개


원문 © Stephen Diehl, stephendiehl.com · 글 CC BY-SA 4.0, 코드 MIT · Stephen Diehl은 런던의 소프트웨어 엔지니어이자 작가입니다(저자가 정한 소개 문구). 이 글은 저자가 개인 자격으로 쓴 것이며 어떤 조직과의 연관도 밝히거나 암시해서는 안 됩니다 (라이선스와 고지).
이 페이지는 원문을 한국어로 옮기며 변경한 비공식 번역이며 같은 CC BY-SA 4.0으로 제공합니다 · yeokja 한국어 번역 · Anthropic 사의 claude-opus-5-5 모델을 활용하여 번역되었으며 학습을 모두 비허용한 상태로 작업하였습니다.