TornadoVM Deep Dive: Empowering Java Developers with GPU Acceleration by Thanos Stratikopoulos, Ch
- TornadoVM의 핵심 목표: Java 개발자가 GPU 가속을 활용하여 대규모 병렬화를 쉽게 구현할 수 있도록 돕는 시스템입니다. 🚀
- 10년 연구의 결실: 맨체스터 대학교에서 10년간 개발되어 연구 프로젝트에서 생산 준비 시스템으로 발전했습니다. 🎓
- 가이아 미션 성공 사례: 유럽 우주국 가이아 미션에 배포되어 데이터 처리 시간을 한 달에서 5일로 단축하는 데 기여했습니다. 🌌
- JVM 플러그인 아키텍처: 기존 JVM(Open JDK, GraalVM 등)에 플러그인 형태로 통합되어, JVM을 대체하지 않고도 GPU 가속 기능을 제공합니다. 🔌
- 다중 언어 지원: GraalVM의 Polyglot 런타임을 통해 JavaScript, Python, R 등 다양한 언어에서 작성된 코드도 GPU로 오프로드할 수 있습니다. 🗣️
- 다양한 하드웨어 백엔드: CUDA(Nvidia), AMD, FPGA를 포함한 여러 백엔드를 지원하며, 현재 OpenCL, PTX, SPIR-V가 성숙 단계이고 Apple Metal 백엔드를 개발 중입니다. 💻
- Java 생태계 활용: Java의 풍부한 프로그래밍, 배포, 디버깅 도구 및 Kubernetes 클러스터와의 통합을 통해 개발 편의성을 높입니다. ☕
- AI 가속화에 집중: LLM 및 AI 애플리케이션의 네이티브 GPU 가속을 위해 최적화되어, 순수 Java로 작성된 AI 워크로드를 GPU에서 실행할 수 있습니다. 🧠
- GPU 프로그래밍의 근본적 차이: GPU는 CPU와 달리 스레드 수준의 병렬 처리, 데이터 병렬화, 하드웨어 메모리 구조(로컬 캐시)에 대한 이해가 필요합니다. 🧩
- 명시적인 GPU 프로그래밍 모델: GPU 프로그래밍은 드라이버, SDK, 런타임, 컴파일러를 포함하는 추상화된 모델을 따르며, 컨텍스트, 커맨드 큐, 버퍼 생성 및 데이터 전송 등 명시적인 단계를 요구합니다. ✍️