GPU에서도 Rust 표준 라이브러리 사용 가능! 개발 생산성 혁신!

by DD
4개월 전
조회수 12

VectorWare는 Rust 표준 라이브러리(std library)를 GPU에서 사용할 수 있도록 구현하여, GPU 프로그래밍의 새로운 지평을 열었다.

기존 GPU 환경에서는 `#![no_std]` 제약으로 인해 표준 라이브러리 사용이 어려웠으나, Hostcall 프레임워크를 통해 이를 극복했다.

GPU와 CPU의 아키텍처적 수렴(Architectural Convergence)에 따라, GPU에서도 표준 라이브러리 지원의 필요성이 증대되고 있다.

향후 오픈 소스화(Open Sourcing)업스트리밍(Upstreaming)을 통해 더 많은 개발자들이 GPU 프로그래밍의 이점을 누릴 수 있도록 할 예정이다.

Hostcall 기반의 표준 라이브러리 구현

VectorWare는 GPU에서 Rust 표준 라이브러리를 사용하기 위해 Hostcall(호스트 호출) 프레임워크를 개발했다. Hostcall은 GPU 코드에서 호스트 CPU로 요청을 보내는 방식으로, 기존의 시스템 콜(System Call)과 유사한 역할을 수행한다. 특히, std::fs::File::open과 같은 API는 Hostcall을 통해 호스트의 파일 시스템 API를 호출하여 구현된다. 이는 GPU에서 표준 라이브러리(Standard Library)의 기능을 사용할 수 있도록 하는 핵심 기술이며, 개발자 경험을 크게 향상시킨다.

GPU와 CPU의 아키텍처적 수렴

CPU와 GPU의 아키텍처적 수렴(Architectural Convergence)은 표준 라이브러리 지원의 중요성을 높인다. AMD의 APU, NVIDIA의 DGX Spark, Apple의 M-series와 같이 CPU와 GPU가 통합되는 추세는 코드 재사용성(Code Reusability)을 더욱 중요하게 만든다. VectorWare는 이러한 변화에 발맞춰 GPU에서도 CPU와 유사한 추상화를 제공함으로써, 개발자들이 이종 아키텍처(Heterogeneous System) 환경에서 일관된 개발 경험을 누릴 수 있도록 지원한다.

성능 최적화 및 안전성 확보 노력

VectorWare는 성능과 안전성을 모두 고려하여 Hostcall 프레임워크를 구현했다. 이중 버퍼링(Double-buffering)원자적 연산(Atomic Operations)과 같은 GPU 프로그래밍 기법을 활용하여 데이터 무결성을 보장하고, GPU 힙 할당을 최소화하기 위해 결과 패킹(Packing Results)을 지원한다. 또한, Miri를 사용하여 Hostcall 런타임 및 커널의 안전성을 검증하는 등, 안전한 GPU 프로그래밍(Safe GPU Programming)을 위한 노력을 기울이고 있다.

향후 과제 및 업스트리밍 계획

VectorWare는 Rust 표준 라이브러리(std library)를 GPU에서 사용할 수 있도록 하는 기술을 오픈 소스화하고, Rust 커뮤니티에 기여할 계획이다. 현재는 libc 스타일의 Facade를 사용하여 표준 라이브러리를 구현했지만, 향후 Rust-native API를 통해 더욱 안전하고 효율적인 구현을 모색할 수 있다. 또한, 다양한 GPU 벤더(Vendor) 및 운영체제(Operating System)를 지원하기 위한 노력을 지속할 예정이다. 표준 라이브러리 업스트리밍(Upstreaming)은 GPU 프로그래밍 생태계 발전에 기여할 것이다.

Rust's standard library on the GPU