주 콘텐츠로 건너뛰기

양자 자원 관리 인터페이스 (QRMI)

양자 자원 관리 인터페이스(QRMI)는 고성능 컴퓨팅(HPC) 시스템이 양자 계산 자원에 접근하고, 제어하며, 동작을 모니터링할 수 있도록 하는 벤더 독립적 라이브러리입니다. 단순한 API 집합을 통해 양자 자원 제어와 관련된 복잡성을 추상화하는 얇은 미들웨어 계층으로 동작합니다. Rust로 작성된 이 인터페이스는 거의 모든 계산 환경에 쉽게 통합할 수 있도록 Python 및 C API도 제공합니다.

QRMI를 빌드하고 배포하기 위한 소스 코드는 이 GitHub 저장소에서 확인할 수 있습니다.

양자 하드웨어에 대해 양자 페이로드를 실행하기 위한 선택적 task_runner 명령줄 도구가 Python 패키지에 포함되어 있습니다. 전체 문서는 GitHub 저장소에서 확인할 수 있습니다.

QRMI 라이브러리 빌드하기

이 섹션에서는 C 및 Python용 QRMI를 빌드하는 방법을 설명합니다.

요구 사항

QRMI는 다음 운영 체제(OS)를 지원합니다:

AlmaLinux 9, Amazon Linux 2023, CentOS Stream 9, CentOS Stream 10, 
RedHat Enterprise Linux 8, RedHat Enterprise Linux 9,
RedHat Enterprise Linux 10, Rocky Linux 8, Rocky Linux 9, SuSE 15,
Ubuntu 22.04, Ubuntu 24.04, MacOS Sequoia 15.1 or above

컴파일 환경

  • Rust 컴파일러 1.91 이상
  • C 컴파일러: 예를 들어, Linux에서는 GCC(gcc), Rust 알 수 없는 타겟/크로스 컴파일을 위해서는 Clang(clang-tools-extra). QRMI는 C11 표준을 준수하는 컴파일러와 호환됩니다.
  • make/cmake (RHEL 호환 OS에서는 make/cmake RPM)
  • openssl (RHEL 호환 OS에서는 openssl-devel RPM)
  • zlib (RHEL 호환 OS에서는 zlib-devel RPM)
  • Python 3.11, 3.12 또는 3.13 (Python API 사용 시)
    • Python 개발에 필요한 라이브러리 및 헤더 파일 (RHEL 호환 OS에서는 python3.1x-devel RPM):
      • /usr/include/python3.1x
      • /usr/lib64/libpython3.1x.so
  • Doxygen (C API 문서 생성용), OS에 따라 다음 명령어를 사용합니다:
    • dnf install doxygen Linux의 경우 (RHEL/CentOS/Rocky Linux 등)
    • apt install doxygen Linux의 경우 (Ubuntu 등)
    • brew install doxygen MacOS의 경우

런타임 환경

  • gcc (RHEL 호환 OS에서는 libgcc RPM)
  • openssl (RHEL 호환 OS에서는 openssl-libs RPM)
  • zlib (RHEL 호환 OS에서는 zlib RPM)
  • Python 3.11, 3.12 또는 3.13 (Python API 사용 시)
    • Python 개발에 필요한 라이브러리 및 헤더 파일 (RHEL 호환 OS에서는 python3.1x-devel RPM)

QRMI 저장소를 저장한 위치에서 다음 명령어를 실행하여 Rust/C API 라이브러리를 빌드합니다.

. ~/.cargo/env
cargo clean
cargo build --release

Python 패키지를 빌드하려면 먼저 Python 환경을 설정하고 필요한 의존성을 설치합니다.

. ~/.cargo/env
cargo clean
python3.12 -m venv ~/py312_qrmi_venv
source ~/py312_qrmi_venv/bin/activate
pip install --upgrade pip
pip install -r requirements-dev.txt

Python 코드의 스텁 파일을 생성합니다.

. ~/.cargo/env
cargo run --bin stubgen --features=pyo3

마지막으로, 호스트에 배포하기 위한 Python 휠을 빌드합니다.

source ~/py312_qrmi_venv/bin/activate
CARGO_TARGET_DIR=./target/release/maturin maturin build --release

휠은 ./target/release/maturin/wheels 디렉터리에 생성됩니다. pip install <wheel> 명령어를 사용하여 호스트에 배포하고 설치할 수 있습니다.

로깅

QRMI는 로깅을 위해 log 크레이트를 지원합니다. RUST_LOG 환경 변수에 로그 레벨을 지정하여 상세한 QRMI 런타임 로그를 확인할 수 있습니다. 지원되는 레벨은 error, warn, info, debug, trace입니다. 기본 레벨은 warn입니다.

trace를 지정하면 기반 HTTP 트랜잭션 로그를 확인할 수 있습니다.

RUST_LOG=trace <your QRMI executable>

로그 예시:

[2025-08-16T03:47:38Z DEBUG request::connect] starting new connection: https://iam.cloud.ibm.com/
[2025-08-16T03:47:38Z DEBUG direct_access_api::middleware::auth] current token ...

API 문서 빌드하기

Rust API 문서는 다음 명령어를 실행하여 생성할 수 있습니다.

. ~/.cargo/env
cargo doc --no-deps --open

C API 문서는 doxygen을 사용하여 생성할 수 있습니다:

doxygen Doxyfile

이 명령어는 ./html 디렉터리 아래에 HTML 문서를 생성하며, 웹 브라우저에서 열어볼 수 있습니다.

Python API 문서는 pydoc으로 생성됩니다. QRMI 패키지가 설치된 가상 환경에 진입한 후 다음 명령어를 실행합니다:

python -m pydoc -p 8290
Server ready at http://localhost:8290/
Server commands: [b]rowser, [q]uit
server> b

그런 다음, 브라우저에서 다음 페이지를 열어봅니다:

http://localhost:8290/qrmi.html 

서버를 중지하려면 다음 명령어를 입력합니다:

server> q