chipStar 소개
chipStar는 HIP과 CUDA 애플리케이션을 SPIR-V 중간 표현으로 컴파일해, OpenCL 또는 oneAPI Level Zero 백엔드를 갖춘 GPU에서 그대로 돌릴 수 있게 해주는 컴파일러 도구입니다. NVIDIA의 CUDA 코드와 AMD ROCm 생태계의 HIP 코드를 받아들여 LLVM 기반 컴파일러 패스로 SPIR-V 디바이스 바이너리를 만들고, 런타임에서 이를 Intel iGPU와 dGPU, ARM Mali, PowerVR 같은 비-NVIDIA, 비-AMD 디바이스로 디스패치합니다. 프로젝트 이름은 cuda와 hip, 그리고 셸 와일드카드를 의미하는 Star를 합친 것으로, "CUDA와 HIP 애플리케이션을 어디서든 돌리겠다"는 의도가 담겨 있다고 README는 설명합니다.
chipStar는 Tampere University와 Parform Oy, Pagan Lc, Georgia Tech, Argonne National Laboratory, Intel Corporation 등이 공동으로 개발하는 오픈 소스 HPC 도구입니다. 학술 인용용으로는 Tampere University 발행 chipStar article 이 공식 레퍼런스로 제공되며, GitHub 저장소는 LLVM 18~20 기반 컴파일러 스택 위에서 1.1 릴리스를 유지하고 있습니다. README에 따르면 1.1 버전은 이미 다양한 대규모 HPC 애플리케이션을 실행할 수 있는 수준이지만, "여전히 활발한 개발 단계로 알려진 이슈와 미구현 기능, 미최적화 부분이 많다"고 명시되어 있습니다.
chipStar가 어떤 컴파일 파이프라인으로 HIP/CUDA를 SPIR-V로 옮기는지, 어떤 백엔드와 디바이스를 지원하는지, 어떤 HIP/ROCm 라이브러리를 함께 사용할 수 있는지, 그리고 실제로 빌드해 보려면 어떤 LLVM과 SPIR-V 도구 체인이 필요한지를 소개합니다.
chipStar의 동작 원리와 백엔드 구조
chipStar의 핵심은 HIP과 CUDA의 호스트·디바이스 코드를 LLVM/Clang의 변형된 빌드로 통과시켜 디바이스 코드 부분만 SPIR-V로 변환하는 데 있습니다. 그래서 빌드 prerequisite 으로 Clang과 LLVM 18, 19, 20 중 하나가 필요하고, 추가로 LLVM 메이저 버전과 호환되는 SPIRV-LLVM-Translator(llvm_release_180, llvm_release_190 등) 와 SPIRV-Tools, SPIRV-Headers 가 함께 설치되어 있어야 합니다. README는 "최선의 결과를 위해서는 아직 LLVM 본류에 머지되지 않은 패치가 들어있는 chipStar의 LLVM 포크"를 사용하라고 권장하며, scripts/configure_llvm.sh 스크립트로 LLVM 18/19/20 중 원하는 버전을 한 번에 빌드하고 설치하는 방법을 안내합니다.
디바이스 측 실행은 OpenCL과 Level Zero 둘 중 하나를 통해 이뤄지며, 이는 환경 변수 CHIP_BE=opencl 또는 CHIP_BE=level0 로 선택합니다. OpenCL 백엔드를 쓰려면 드라이버가 OpenCL 2.0/3.0 수준의 coarse-grained SVM, SPIR-V 입력, 제너릭 주소 공간, 프로그램 스코프 변수 같은 기능을 지원해야 하며, 워프 프리미티브(shuffle, ballot 등) 까지 쓰려면 서브그룹 확장과 cl_intel_required_subgroup_size 같은 인텔 확장이 추가로 필요합니다. Level Zero 백엔드는 Intel Compute Runtime 또는 oneAPI 패키지와 oneAPI Level Zero Loader 가 깔려 있어야 하며, HIP-SYCL/HIP-MKL Interoperability 가 필요한 경우 oneAPI Base Toolkit 자체를 설치합니다.
실행 시점의 디바이스 선택은 CHIP_BE, CHIP_PLATFORM, CHIP_DEVICE, CHIP_DEVICE_TYPE 네 가지 환경 변수로 제어합니다. 예를 들어 시스템에 Intel Arc A380 dGPU와 UHD 770 iGPU가 함께 보이는 환경이라면 clinfo -l로 플랫폼 인덱스를 확인한 뒤 다음과 같이 OpenCL 백엔드의 iGPU를 명시할 수 있습니다.
export CHIP_BE=opencl
export CHIP_PLATFORM=1
export CHIP_DEVICE=0
그밖에도 CHIP_LOGLEVEL, CHIP_DUMP_SPIRV, CHIP_DUMP_PROCESSED_SPIRV, CHIP_JIT_FLAGS, CHIP_MODULE_CACHE_DIR, CHIP_VERIFY_MODE 같은 환경 변수가 SPIR-V 덤프와 JIT 플래그, 모듈 캐시 경로, LLVM IR/SPIR-V 검증 출력 수준을 세부적으로 조정할 수 있도록 제공됩니다. 모듈 캐시는 기본적으로 $HOME/.cache/chipStar 에 저장되며, 캐싱을 끄려면 해당 변수를 빈 문자열로 설정합니다.
chipStar가 지원하는 GPU 플랫폼 범위
chipStar의 매력은 같은 HIP/CUDA 코드 베이스를 그대로 두고 비교적 이질적인 GPU 플랫폼에 이식할 수 있다는 점입니다. README의 GitHub Actions 배지에서 확인되는 정기 CI 대상은 Intel GPU와 ARM GPU이며, 본문에서는 다음 세 가지 비-AMD/비-NVIDIA 환경에서의 사용 사례를 명시적으로 다룹니다.
첫 번째는 Intel GPU 환경으로, OpenCL 백엔드와 Level Zero 백엔드 모두를 지원합니다. Intel Iris Xe iGPU나 Data Center GPU Max, Arc 시리즈 dGPU 가 검증 대상에 포함되어 있고, 단위 테스트는 check.py 스크립트가 OpenCL/Level Zero × CPU/iGPU/dGPU/PoCL 조합별로 알려진 실패 케이스를 필터링하면서 돌립니다. 두 번째는 ARM + Mali 환경입니다. -DCHIP_MALI_GPU_WORKAROUNDS=ON 옵션으로 cmake 구성을 켜면 Mali G52 같은 ARM GPU에서 chipStar를 빌드할 수 있고, README는 Ubuntu 22.04와 Odroid N2, OpenCL 3.0 v1.r40p0-01eac0 드라이버 조합에서 성공적으로 실행한 경험을 함께 적어 둡니다. 다만 더블 정밀도 커널과 일부 서브그룹 커널은 동작하지 않을 수 있다는 한계가 따라옵니다.
세 번째는 RISC-V + PowerVR 환경으로, VisionFive2 보드의 Imagination Technologies PowerVR GPU를 대상으로 합니다. PowerVR OpenCL 구현의 버그를 우회하는 패치(CHIP-SPV/chipStar#828) 가 자동으로 적용되며, 이번 케이스 역시 더블 정밀도와 서브그룹은 제한적이고 CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST 같은 알려진 OpenCL 오류가 나올 수 있습니다.
이 세 플랫폼 외에도, chipStar는 라이브러리 포팅을 통해 HIP/ROCm 생태계 자체를 인텔과 같은 비-AMD 디바이스로 끌어옵니다. 평탄화된 빌드 인터페이스는 install_chipstar.py 스크립트로 제공되며, 인터랙티브 TUI 모드(./install_chipstar.py) 와 컴포넌트 선택 모드(./install_chipstar.py --components chipstar,rocprim,hipcub), 전체 설치 모드(./install_chipstar.py --all --install-dir ~/install/HIP) 가 README에 소개되어 있습니다.
chipStar가 함께 제공하는 HIP/ROCm 라이브러리
chipStar는 단순한 컴파일러에 그치지 않고, AMD ROCm의 주요 라이브러리들을 자체 fork 로 유지하면서 함께 빌드할 수 있게 합니다. 플랫폼 독립적인 포팅으로 README가 나열하는 라이브러리는 다음과 같습니다.
-
rocPRIM: 병렬 프리미티브 라이브러리. (CHIP-SPV/rocPRIM)
-
hipCUB: HIP용 CUB-라이크 프리미티브. (CHIP-SPV/hipCUB)
-
rocThrust: Thrust 호환 병렬 알고리즘. (CHIP-SPV/rocThrust)
-
rocSPARSE / hipSPARSE: 희소 행렬 연산과 HIP 인터페이스. (rocSPARSE, hipSPARSE)
-
hipMM: HIP 메모리 매니저 (RMM 포트). (CHIP-SPV/hipMM)
여기에 Intel oneAPI MKL을 백엔드로 쓰는 별도 라이브러리 군이 추가됩니다. H4I-MKLShim 이 MKL shim layer 로 기반을 만들고, 그 위에 H4I-HipBLAS, H4I-HipFFT, H4I-HipSOLVER 가 각각 hipBLAS, hipFFT, hipSOLVER 의 MKL 백엔드 구현을 제공합니다. AMD GPU 에서 돌리던 BLAS/FFT/Solver 코드를 큰 수정 없이 Intel GPU 의 MKL 위에서 다시 돌리도록 하는 호환 계층이라고 볼 수 있습니다.
실제로 chipStar 가 이 라이브러리들과 함께 검증된 사례로 README 는 세 가지를 듭니다. 미국 Argonne 의 libCEED 고차수 유한요소 라이브러리(저장소에는 우회 패치가 포함된 fork 가 제공됨), Iowa State University 의 GAMESS 양자화학 패키지(소스는 공개되지 않음), 그리고 HeCBench CUDA 벤치마크 모음입니다.
chipStar 부속 도구, SPIR-V 추출과 OpenCL 컴파일
chipStar는 SPIR-V 바이너리를 다루는 두 가지 보조 도구를 함께 설치합니다. 첫 번째는 spirv-extractor 로, HIP fatbinary 안에서 SPIR-V 바이너리를 꺼내고 검증합니다. --validate 옵션을 주면 SPIR-V 스펙 검증과 함께 메모리 모델, 실행 모델, capability 같은 HIP 커널 호환성 제약을 추가로 점검하며, --check-for-doubles 옵션은 더블 정밀도 사용 여부를 확인해 더블이 지원되지 않는 디바이스에서 테스트를 건너뛰는 용도로 쓰입니다.
# fatbinary에서 SPIR-V 추출하여 텍스트로 출력
./build/bin/spirv-extractor my_kernel.fatbin
# .spv와 .txt 형식으로 저장
./build/bin/spirv-extractor -o kernel.spv my_kernel.fatbin
# SPIR-V 검증
./build/bin/spirv-extractor --validate my_kernel.fatbin
두 번째 도구는 opencl-spirv-compiler 로, SPIR-V 바이너리 또는 어셈블리(.spv/.spvasm) 를 OpenCL 런타임으로 컴파일해 디바이스 전용 바이너리(_device.bin) 를 생성합니다. 단일 파일과 디렉토리 재귀 모드를 모두 지원하며, OpenCL 빌드 로그를 포함한 자세한 에러 메시지를 출력해 SPIR-V 단계에서의 호환성 문제를 빠르게 좁히는 데 유용합니다.
chipStar 설치와 빌드
가장 빠른 시작점은 README가 권장하는 docker README 의 사전 빌드 컨테이너입니다. 직접 빌드한다면 다음 흐름을 따릅니다.
# 1) 소스 클론
git clone https://github.com/CHIP-SPV/chipStar.git
cd chipStar
git submodule update --init --recursive
# 2) LLVM (chipStar 포크 권장) 빌드 — 별도 디렉토리에
./scripts/configure_llvm.sh --version 19 --install-dir /opt/install/llvm/19.0
cd llvm-project/llvm/build_17 && make -j 16 && sudo make install
# 3) chipStar 빌드
cd /path/to/chipStar
mkdir build && cd build
cmake .. \
-DLLVM_CONFIG_BIN=/path/to/llvm-config \
-DCMAKE_INSTALL_PREFIX=/path/to/install
make all build_tests install -j8
설치 후 단위 테스트는 scripts/check.py 로 백엔드와 디바이스 타입을 명시해 돌립니다.
python3 $SOURCE_DIR/scripts/check.py $BUILD_DIR $DEVICE $BACKEND
# DEVICE: cpu/igpu/dgpu/pocl, BACKEND: opencl/level0
빌드 중 libOpenCL.so 가 보이지 않아 OpenCL 백엔드가 비활성화되거나, GCC가 여러 버전 설치된 환경에서 Clang++ 가 libstdc++ 를 찾지 못해 링크에 실패하는 경우는 README의 Troubleshooting 섹션이 이슈 #542 와 LLVM Discourse 의 관련 토론 을 참고로 우회 방법을 알려줍니다. 더블 정밀도 미지원 디바이스에서는 cmake 단계에 -DSKIP_TESTS_WITH_DOUBLES=ON 을 주거나, Intel iGPU에 한해 IGC_EnableDPEmulation=1 과 OverrideDefaultFP64Settings=1 환경 변수로 소프트웨어 에뮬레이션을 켤 수 있다고 README는 안내합니다.
chipStar 라이선스
chipStar의 LICENSE 파일은 Tampere University, Parform Oy, Pagan Lc, Georgia Tech, Argonne National Laboratory, Intel Corporation 의 2020~2024년 공동 저작권을 명시한 뒤, "어떠한 제한도 없이 사용, 복제, 수정, 머지, 게시, 배포, 서브라이선스, 판매할 수 있다"는 MIT 스타일의 허가 문구를 그대로 사용합니다. 다만 LICENSE 파일 후반부에는 "Portions copyright Advanced Micro Devices" 와 같이 일부 코드가 별도 저작권 아래에 들어 있다고 적고 있어, 실제 사용 시 LICENSE 파일 본문과 각 서브 라이선스 표기를 직접 확인하는 것이 안전합니다.
chipStar 논문
https://urn.fi/URN:NBN:fi:tuni-202603093048
chipStar 프로젝트 GitHub 저장소
더 읽어보기
-
AI 가속하기: 이제 더 빠른 워크로드를 위해 PyTorch 2.4에서 Intel GPU를 지원합니다 | 파이토치 한국 사용자 모임
-
AMD MI300X GPU 이벤트 후기 Part1 - 왜 MI300X인가? — GraphRAG를 하드웨어부터 워크로드까지 해부하다
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()


