프로젝트 소개

Bend는 대규모 병렬 처리를 위해 설계된 고수준 프로그래밍 언어로, HigherOrderCO가 개발하고 HVM2 런타임으로 구동된다. 이 언어는 Python이나 Haskell 같은 언어의 표현력과 CUDA 스타일 GPU 컴퓨팅의 확장 동작을 결합하는 것을 목표로 한다. README에 강조된 언어 기능으로는 빠른 객체 할당, 클로저가 있는 고차 함수의 완전한 지원, 무제한 재귀, 그리고 연속(continuations)이 포함된다. 병렬 처리는 암시적이다. README에 따르면 스레드 생성, 락, 뮤텍스, 아토믹이 전혀 필요 없다. 병렬로 실행될 수 있는 코드는 자동으로 병렬 실행되며, 코어 수에 따라 거의 선형에 가까운 가속을 보인다. 또한 이 프로젝트는 10,000개 이상의 동시 스레드를 지원한다고 주장한다. 설치는 Rust의 cargo를 통해 이루어진다. 사용자는 먼저 `cargo install hvm`으로 HVM2 런타임을 설치한 다음, `cargo install bend-lang`으로 언어를 설치한다. 설치 안내에는 Linux와 macOS가 포함되어 있으며, Windows는 WSL2를 권장한다. CUDA 런타임에는 NVIDIA CUDA 툴킷 12.x가 필요하며, README는 현재 NVIDIA GPU만 지원된다고 밝히고 있다. 프로그램은 여러 백엔드를 통해 실행할 수 있다. `bend run-rs`는 순차 Rust 인터프리터를 사용하고, `bend run-c`는 병렬 C 인터프리터를 사용하며, `bend run-cu`는 대규모 병렬 CUDA 인터프리터를 사용한다. Bend 코드는 `gen-c`와 `gen-cu`를 통해 독립 실행형 C 또는 CUDA 파일로 컴파일할 수도 있지만, README는 이 코드 생성기를 초기 단계라고 설명한다. `-s` 플래그는 축소(reduction) 횟수, 실행 시간, 초당 상호작용 수를 보고한다. README는 순차 합산과 병렬 합산 예제를 대비해 보여주며, 분할 정복 방식의 공식화가 어떻게 자동 병렬 실행을 가능하게 하는지 설명한다. 또한 비트닉 정렬기(bitonic sorter) 벤치마크를 제시하는데, 보고된 측정값은 Apple M3 Max CPU에서 Rust 인터프리터로 12.15초, 같은 CPU에서 C 인터프리터로 0.96초, NVIDIA RTX 4090 GPU에서 CUDA 인터프리터로 0.21초였다. 이 수치는 프로젝트가 직접 보고한 측정값이다. README는 현재 버전의 단일 코어 성능이 낮을 수 있으며, 코드 생성 및 최적화 기술이 발전함에 따라 성능이 개선될 것이라고 주의를 준다. 추가 자료로는 HVM2 논문, GUIDE.md, FEATURES.md, 예제 폴더, Discord 커뮤니티가 있다.