Sirius - GPU-Native SQL 엔진 요약
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 데이터 엔지니어, 클라우드 개발자, 고성능 컴퓨팅 담당자
- GPU 아키텍처 이해 및 SQL 엔진 최적화에 관심 있는 중급 이상 개발자
핵심 요약
- GPU-Native SQL 엔진으로 Substrait 쿼리 포맷을 통해 DuckDB CPU 엔진과 호환 (코드:
Substrait
) - GPU 메모리 분할(Raw Data Cache Region + Processing Region)으로 TPC-H 100 규모에서 10배 이상 성능 향상
- NVIDIA Volta(7.0+) GPU, CUDA 11.2+, Ubuntu 20.04+ 환경에서 실행 (권장: 16vCPU 이상)
섹션별 세부 요약
1. 기술적 개요
- GPU 하드웨어 기반 SQL 쿼리 가속화
- Substrait 포맷을 통해 CPU 엔진(DuckDB) → GPU 엔진(Sirius) 간 쿼리 전달
- 대규모 데이터 워크로드(실시간 분석, 금융, ETL) 최적화
2. 메모리 구조 및 성능
- GPU 메모리 분할
- Raw Data Cache Region: 데이터 적재
- Processing Region: 쿼리 처리
- TPC-H 100 규모에서 동일 비용 기준 10배 이상 속도 향상
3. 설치 및 실행 환경
- 지원 환경:
- OS: Ubuntu 20.04+
- GPU: NVIDIA Volta(7.0+) 이상
- CUDA: 11.2+
- CMake: 3.30.4+
- 설치 옵션:
- AWS AMI (미리 구성된 이미지)
- Docker 이미지:
sudo docker run --gpus all -it yifeiyang7/sirius_dependencies:latest bash
- 수동 설치: DuckDB, CUDA, libcudf(conda 설치) 필요
4. 제한사항 및 지원 기능
- GPU 메모리 내에서만 동작 (추후 파티셔닝/멀티 GPU 지원 예정)
- 최대 row count:
libcudf
의int32_t
한계 (~20억 rows) - 지원 데이터 타입: INTEGER, BIGINT, FLOAT, DOUBLE, VARCHAR, DATE, DECIMAL
- 지원 연산자: FILTER, PROJECTION, JOIN, GROUP-BY, ORDER-BY, AGGREGATION
- 미지원 기능: PARTIALLY NULL COLUMN, WINDOW 함수 (개발 중)
결론
- GPU 성능 활용을 위한 설치 시 GPU 사양(메모리, CUDA 버전) 및 데이터 규모 확인 필수
- Docker 또는 AWS AMI를 통해 빠르게 배포 가능
- GPU 메모리 한계 및 row count 제한에 주의 (예: 20억 rows 이상은 libcudf 한계로 제한)
- 이슈 발생 시 자동으로 DuckDB CPU 엔진으로 폴백 (보안 및 안정성 강화)