beehive-lab/TornadoVM
Write Java. Run on GPUs. Fast.
해결하는 문제
TornadoVM을 사용하면 Java 개발자가 네이티브 C/C++ 또는 CUDA 코드를 작성할 필요 없이 GPU 및 멀티코어 CPU에서 계산 집약적인 작업을 실행할 수 있습니다. JNI 바인딩 및 네이티브 툴체인을 관리하는 복잡성을 제거하여 고성능 컴퓨팅(HPC) 및 AI 워크로드를 JVM에서 직접 실행할 수 있게 합니다.
작동 방식
런타임에 Java 바이트코드를 NVIDIA CUDA, OpenCL C, Apple Metal (MSL)과 같은 대상별 언어로 JIT 컴파일합니다. 세 가지 수준의 API 제어를 제공합니다.
- Loop Parallel API:
@Parallel어노테이션을 사용하여 스레드 매핑을 자동으로 추론합니다. - KernelContext API: CUDA/OpenCL과 유사한 명시적 스레드 인덱싱을 제공하여 세밀한 제어가 가능합니다.
- TileContext API: 스레드가 아닌 타일 단위로 프로그래밍할 수 있는 특수 CUDA 경로로, 타일 컴파일러를 활용하여 Tensor Core 명령어를 최적화합니다.
NVIDIA 하드웨어에서는 NVIDIA 라이브러리 생태계(cuBLAS, cuFFT, cuDNN, cuDF)와 직접 통합되며, Tensor Core mma.sync 내장 함수를 노출하여 이러한 네이티브 호출이 단일 TaskGraph 내에서 장치 버퍼를 공유할 수 있도록 합니다.
대상 사용자
GPU(NVIDIA, AMD, Intel, Apple Silicon) 및 멀티코어 CPU를 사용하여 머신 러닝, 딥 러닝, 컴퓨터 비전, 물리 시뮬레이션 또는 금융 애플리케이션을 가속화해야 하는 Java 개발자.
주요 특징
- 멀티 백엔드 지원: NVIDIA (CUDA), AMD, Intel 및 Apple Silicon (Metal) GPU에서 작동합니다.
- 네이티브 NVIDIA 통합: JNI 바인딩 없이 cuBLAS, cuFFT, cuDNN 및 cuDF에 직접 액세스합니다.
- Tensor Core 액세스: TileContext API를 통해
mma.sync명령어 및 타일 프로그래밍을 노출합니다. - CUDA Graph 지원: 실행 계획을 단일 CUDA Graph로 기록하고 재생하여 시작 오버헤드를 줄입니다.
- JVM 호환성: JVM을 교체할 필요 없이 기존 OpenJDK 또는 GraalVM 설치에 플러그인 방식으로 통합됩니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- Dispatch