Rumoca: 범용 대수적 프론트엔드로서의 Modelica를 위한 Rust 네이티브 컴파일러
요약
Modelica를 다양한 현대적 엔지니어링 워크플로우에 맞게 변환하는 Rust 기반 네이티브 컴파일러 Rumoca를 소개합니다. 파싱부터 DAE 구축, 코드 생성까지의 파이프라인을 통해 JAX, Julia 등과의 호환성을 높였습니다.
핵심 포인트
- Modelica를 범용 대수적 프론트엔드로 활용하는 Rust 컴파일러 개발
- JAX, Julia 등 현대적 과학적 머신러닝 환경과의 연동 지원
- 실시간 소프트웨어 인 더 루프(SIL) 실행을 위한 Rust 백엔드 포함
- VS Code 확장 프로그램 및 WebAssembly 기반 브라우저 실행 지원
Modelica는 잘 확립된 사이버 물리 모델링 (cyber-physical modeling) 언어이지만, 최적화 (optimization), 미분 가능한 시뮬레이션 (differentiable simulation), 과학적 머신러닝 (scientific machine learning), 시스템 분석 (system analysis)과 같은 많은 현대적 엔지니어링 워크플로우는 CasADi, JAX, Julia와 같은 다른 환경을 사용합니다. 기존의 Modelica 툴체인 (toolchain) 인프라는 이러한 언어들을 직접적으로 타겟팅하지 않으며, 이는 모델을 일반적으로 다시 작성하거나 인터페이스에서 중요한 정보를 잃어야 함을 의미합니다. 본 논문은 Modelica를 다양한 도구를 위한 범용 대수적 프론트엔드 (universal algebraic frontend)로 변환하는 Rust 네이티브 Modelica 컴파일러인 Rumoca를 소개합니다. Rumoca는 파싱 (parsing)부터 미분-대수 방정식 (Differential-Algebraic Equation, DAE) 구축 및 템플릿 기반 코드 생성에 이르기까지 명시적인 단계 경계 (phase boundaries)의 시퀀스로 구성되어 있으며, 실시간 소프트웨어 인 더 루프 (software-in-the-loop) 실행을 지원하는 네이티브 Rust 시뮬레이션 백엔드를 갖추고 있습니다. 우리는 파이프라인 단계 전반에 걸친 Modelica 표준 라이브러리 (Modelica Standard Library)의 정량적 커버리지와 함께, 오픈 소스 참조 모델에 대한 컴파일 시간 및 시뮬레이션 시간 벤치마크를 보고합니다. 전체 컴파일러는 VS Code 확장 프로그램으로 제공되며 WebAssembly를 통해 브라우저에서 실행되어, 설치가 필요 없는 플레이그라운드 (playgrounds)와 독립형 HTML 시뮬레이터를 가능하게 합니다. 엔드 투 엔드 (end-to-end) 사례 연구를 통해 쿼드로터 (quadrotor) 모델의 실시간 소프트웨어 인 더 루프 제어와 단일 Modelica 소스를 여러 대수적 백엔드 (algebraic backends)에 배포하는 것을 입증합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.PL (Programming Languages)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기