Přeskočit na hlavní obsah
Tento projekt je v betě. Našel jsi chybu? Otevřít issue na GitHubu. Máš otázku nebo nápad? Zeptej se v Discussions — rádi si poslechneme tvou zpětnou vazbu!
Jaká je kvalita překladu na této stránce?

SPANK plugin pro QRMI

SPANK plugin pro Quantum Resource Management Interface (QRMI) slouží ke konfiguraci přístupu ke kvantovým zdrojům z uživatelských úloh ve výpočetním prostředí spravovaném správcem úloh Slurm. Zajišťuje získání a uvolnění přístupu ke kvantovým zdrojům a nastavuje potřebné proměnné prostředí pro spouštění kvantových úloh. Dostupné kvantové zdroje jsou specifikovány v souboru qrmi_config.json, který spravuje administrátor.

Po instalaci plugin registruje následující volbu. Uživatel Slurmu může určit, které kvantové zdroje se použijí pro skript Slurm úlohy.

--qpu=names Comma separated list of QPU resources to use.

Například:

#!/bin/bash

#SBATCH --job-name=sampler_job
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --qpu=ibm_quebec,ibm_sherbrooke

# Your script goes here...

Požadavky a konfigurace​

Pro prostředí sestavení jsou vyžadovány následující nástroje:

  • Kompilátor Rust verze 1.86 nebo novější
  • Kompilátor C: například GCC (gcc) na Linuxu a Clang (clang-tools-extra) pro neznámé cíle Rustu / cross kompilace. QRMI a jeho SPANK plugin jsou kompatibilní s kompilátorem odpovídajícím standardu C11
  • make/cmake (make/cmake RPM pro operační systémy kompatibilní s RHEL)
  • openssl (openssl-devel RPM pro operační systémy kompatibilní s RHEL)
  • zlib (zlib-devel RPM pro operační systémy kompatibilní s RHEL)
  • Hlavičkové soubory Slurmu (slurm/slurm.h a další) musí být dostupné na tvém hostu

Běhové prostředí vyžaduje:

  • gcc (libgcc RPM pro operační systémy kompatibilní s RHEL)
  • openssl (openssl-libs RPM pro operační systémy kompatibilní s RHEL)
  • zlib (zlib RPM pro operační systémy kompatibilní s RHEL)

Konfigurace dostupných kvantových zdrojů​

Repozitář obsahuje ukázkovou konfiguraci (qrmi_config.json.example).

Pole resources obsahuje sadu dostupných kvantových zdrojů. Každá definice kvantového zdroje obsahuje následující položky:

VlastnostPopis
nameNázev kvantového zdroje (například název Backend)
typeTyp zdroje (direct-access, qiskit-runtime-service a pasqal-cloud)
environmentSada proměnných prostředí pro práci s QRMI. Aktuální implementace předpokládají, že API endpoint a přihlašovací údaje jsou specifikovány pomocí nastavení proměnných prostředí

Pokud uživatel zadá pomocí volby --qpu zdroj, který není definován v souboru qrmi_config.json, tato specifikace bude ignorována.

Pokud si uživatel sám nastaví potřebné proměnné prostředí pro spuštění úlohy, není nutné je v tomto souboru uvádět. V takovém případě bude vlastnost environment rovna {}.

poznámka

Pokud používáš QPU zdroj s typem zdroje qiskit-runtime-service, použij účet, který podporuje otevření session, například účet Premium Plan.

Pokud používáš účet, který nepodporuje otevření session, například účet Open Plan, přidej jako náhradní řešení QRMI_IBM_QRS_SESSION_MODE="batch" do seznamu proměnných prostředí v souboru qrmi_config.json.

Instalace​

Spusť sestavení pomocí make a cmake:

. ~/.cargo/env
mkdir build
cd build
cmake ..
make

Ve výchozím nastavení soubor CMakeLists.txt očekává, že hlavičkový soubor Slurmu (slurm.h) se nachází v /usr/include/slurm, ale toto lze upravit následovně.

SLURM_INCLUDE_DIRS=<directory containing slurm/slurm.h> cmake ..

Pokud výše uvedený krok sestavení proběhne úspěšně, ve složce build/ bude vytvořena sdílená knihovna pro Linux s názvem spank_qrmi.so.

Navíc přidej do souboru /etc/slurm/plugstack.conf na uzlech, kde je tento plugin nainstalován, následující jeden řádek (pozor: administrátor musí vytvořit soubor qrmi_config.json a zadat jeho cestu jako argument pluginu, jak je uvedeno níže):

optional /usr/lib64/slurm/spank_qrmi.so /etc/slurm/qrmi_config.json
poznámka

Pomocí dostupných volitelných argumentů můžeš přidávat proměnné prostředí do procesu Slurmu, kde je SPANK plugin načten. Formát pro zadání proměnných prostředí je definován takto:

--env:{variable name}={value}

Například při komunikaci s kvantovými zdroji přes HTTP proxy jsou vyžadovány proměnné prostředí http_proxy, https_proxy a no_proxy. Tyto lze přidat následovně:

optional /usr/lib64/slurm/spank_qrmi.so /etc/slurm/qrmi_config.json \
--env:http_proxy=http://192.168.1.128:3128 \
--env:https_proxy=http://192.168.1.128:3128

Pro uzel alokátoru není nutné zadávat cestu k souboru qrmi_config.json, jak je uvedeno níže.

optional /usr/lib64/slurm/spank_qrmi.so

Následující tabulka ukazuje, na které uzly Slurm kontextu mají být tyto soubory zkopírovány. Další podrobnosti o každém kontextu najdeš v dokumentaci SPANK pluginu.

SouborySlurm kontexty
plugstack.conflocal, remote, allocator, slurmd a job_script
qrmi_config.jsonremote (výpočetní uzly)
spank_qrmi.soallocator a remote (přihlašovací uzly a výpočetní uzly)
poznámka

Po aktualizaci souboru plugstack.conf budou SPANK pluginy načteny za běhu při dalším spuštění úlohy, což znamená, že administrátoři nemusí restartovat Slurm cluster.

Po dokončení instalace bys měl(a) v nápovědě příkazu sbatch najít volbu --qpu=names.

Options provided by plugins:
--qpu=names Comma-separated list of QPU resources to use.

Logování​

Tento plugin používá pro logování logger Slurmu. Logovací zprávy z tohoto pluginu lze najít v souboru /var/log/slurm/slurmd.log.

[2025-07-31T09:43:34.019] [21.batch] debug: spank: /etc/slurm/plugstack.conf:1: Loaded plugin spank_qrmi.so
[2025-07-31T09:43:34.019] [21.batch] debug: spank_qrmi_c(6582, 0): -> slurm_spank_init argc=1 remote=1
[2025-07-31T09:43:34.019] [21.batch] debug: SPANK: appending plugin option "qpu"
[2025-07-31T09:43:34.019] [21.batch] debug: spank_qrmi_c(6582,0): <- slurm_spank_init rc=0
[2025-07-31T09:43:34.019] [21.batch] debug2: spank: spank_qrmi.so: init = 0
[2025-07-31T09:43:34.019] [21.batch] debug: spank_qrmi_c: --qpu=[ibm_sherbrooke,ibm_torino]
[2025-07-31T09:43:34.019] [21.batch] debug: spank_qrmi_c(6582, 0): -> slurm_spank_init_post_opt argc=1 remote=1
[2025-07-31T09:43:34.019] [21.batch] debug: spank_qrmi_c, fffffffb
[2025-07-31T09:43:34.019] [21.batch] debug: spank_qrmi_c: argv[0] = [/etc/slurm/qrmi_config.json]
[2025-07-31T09:43:34.020] [21.batch] debug: spank_qrmi_c: name(ibm_sherbrooke), type(1) found in qrmi_config

Logování běhového prostředí QRMI můžeš zapnout zadáním následujících argumentů příkazu srun.

Volba sbatch/srunÚroveň protokolu Slurmu (SRUN_DEBUG)Úroveň protokolu QRMI (RUST_LOG)
(výchozí)3info
--quiet2error
--verbose4debug
-vv nebo více5trace

Poznámky k použití více QPU​

Za běhu je každá instance QRMI propojena s jediným QPU zdrojem. Aby bylo možné v rámci jednoho skriptu úlohy použít více kvantových zdrojů, nastavuje tento plugin proměnné prostředí s názvem zdroje jako předponou. Například pokud je zadáno --qpu=qpu1,qpu2, proměnné prostředí budou nastaveny takto:

qpu1_QRMI_IBM_DA_ENDPOINT=http://test1
qpu2_QRMI_IBM_DA_ENDPOINT=http://test2

Tím je zajištěno, že každá instance QRMI pracuje s konfiguračními parametry nastavenými pro příslušný zdroj během vykonávání Slurm úlohy.

Výše uvedená nastavení proměnných prostředí jsou aplikována pouze na úlohy, u nichž je zadána volba --qpu=names.

Tento plugin také nastavuje následující dvě proměnné prostředí, na které odkazuje kód primitivů QRMI.

Proměnná prostředíPopis
SLURM_JOB_QPU_RESOURCESSeznam QPU zdrojů oddělený čárkami, které se použijí za běhu. Nedokumentované zdroje budou odfiltrovány. Například qpu1,qpu2
SLURM_JOB_QPU_TYPESSeznam typů zdrojů oddělený čárkami (direct-access, qiskit-runtime-service a pasqal-cloud). Například direct-access,pasqal-cloud