Aller au contenu principal

Interface de gestion des ressources quantiques (QRMI)

L'interface de gestion des ressources quantiques (QRMI) est une bibliothèque indépendante des fournisseurs destinée aux systèmes de calcul haute performance (HPC) pour accéder aux ressources de calcul quantique, les contrôler et surveiller leur comportement. Elle agit comme une fine couche middleware qui abstrait les complexités liées au contrôle des ressources quantiques grâce à un ensemble d'API simples. Écrite en Rust, cette interface expose également des API Python et C pour faciliter l'intégration dans pratiquement n'importe quel environnement de calcul.

Tu trouveras le code source pour construire et déployer QRMI dans ce dépôt GitHub.

Un outil optionnel en ligne de commande task_runner pour exécuter des charges utiles quantiques sur du matériel quantique est inclus dans le paquet Python. Consulte la documentation complète dans le dépôt GitHub.

Compiler les bibliothèques QRMI

Cette section montre comment compiler QRMI pour C et Python.

Prérequis

QRMI prend en charge les systèmes d'exploitation (OS) suivants :

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

Environnement de compilation

  • Compilateur Rust 1.91 ou supérieur
  • Un compilateur C : par exemple, GCC (gcc) sous Linux et Clang (clang-tools-extra) pour les cibles inconnues de Rust / compilations croisées. QRMI est compatible avec un compilateur conforme à la norme C11
  • make/cmake (RPM make/cmake pour les OS compatibles RHEL)
  • openssl (RPM openssl-devel pour les OS compatibles RHEL)
  • zlib (RPM zlib-devel pour les OS compatibles RHEL)
  • Python 3.11, 3.12 ou 3.13 (pour l'API Python)
    • Bibliothèques et fichiers d'en-tête nécessaires au développement Python (RPM python3.1x-devel pour les OS compatibles RHEL) :
      • /usr/include/python3.1x
      • /usr/lib64/libpython3.1x.so
  • Doxygen (pour générer la documentation de l'API C), selon l'OS :
    • dnf install doxygen pour Linux (RHEL/CentOS/Rocky Linux et autres)
    • apt install doxygen pour Linux (Ubuntu et autres)
    • brew install doxygenpour MacOS

Environnement d'exécution

  • gcc (RPM libgcc pour les OS compatibles RHEL)
  • openssl (RPM openssl-libs pour les OS compatibles RHEL)
  • zlib (RPM zlib pour les OS compatibles RHEL)
  • Python 3.11, 3.12 ou 3.13 (pour l'API Python)
    • Bibliothèques et fichiers d'en-tête nécessaires au développement Python (RPM python3.1x-devel pour les OS compatibles RHEL)

Compile la bibliothèque API Rust/C avec les commandes suivantes, à l'endroit où tu as sauvegardé le dépôt QRMI.

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

Pour compiler le paquet Python, commence par configurer un environnement Python et installer les dépendances requises.

. ~/.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

Crée les fichiers stub pour le code Python.

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

Enfin, compile les wheels Python pour les distribuer sur tes hôtes.

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

Le wheel est créé dans le répertoire ./target/release/maturin/wheels. Tu peux le distribuer et l'installer sur tes hôtes avec pip install <wheel>.

Journalisation

QRMI prend en charge le crate log pour la journalisation. Tu peux consulter les journaux détaillés d'exécution de QRMI en spécifiant la variable d'environnement RUST_LOG avec le niveau de journalisation. Les niveaux pris en charge sont error, warn, info, debug et trace. Le niveau par défaut est warn.

Si tu spécifies trace, tu peux consulter les journaux de transactions HTTP sous-jacentes.

RUST_LOG=trace <your QRMI executable>

Exemple de journaux :

[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 ...

Compiler la documentation de l'API

La documentation de l'API Rust peut être créée en exécutant :

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

La documentation de l'API C peut être créée avec doxygen :

doxygen Doxyfile

Cela créera un document HTML dans le répertoire ./html, que tu pourras ouvrir dans un navigateur web.

La documentation de l'API Python est générée avec pydoc. Après être entré dans l'environnement virtuel avec le paquet QRMI installé, exécute les commandes suivantes :

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

Ensuite, ouvre la page suivante dans ton navigateur :

http://localhost:8290/qrmi.html

Arrête le serveur avec :

server> q