Lewati ke konten utama

Plugin SPANK untuk QRMI

Plugin SPANK untuk Quantum Resource Management Interface (QRMI) digunakan untuk mengonfigurasi akses ke sumber daya kuantum dari job pengguna di lingkungan komputasi yang dikelola oleh workload manager Slurm. Plugin ini menangani akuisisi dan pelepasan akses ke sumber daya kuantum serta menetapkan variabel lingkungan yang diperlukan untuk menjalankan workload kuantum. Sumber daya kuantum yang tersedia ditentukan dalam file qrmi_config.json, yang dikelola oleh administrator.

Setelah dipasang, plugin ini mendaftarkan opsi berikut. Pengguna Slurm bisa menentukan sumber daya kuantum mana yang digunakan untuk skrip job Slurm.

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

Contohnya,

#!/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...

Persyaratan dan konfigurasi​

Alat-alat berikut diperlukan untuk lingkungan kompilasi:

  • Rust compiler versi 1.86 atau lebih baru
  • Kompiler C: misalnya, GCC (gcc) di Linux dan Clang (clang-tools-extra) untuk target unknown Rust/kompilasi silang. QRMI dan plugin SPANK-nya kompatibel dengan kompiler yang sesuai standar C11
  • make/cmake (RPM make/cmake untuk OS kompatibel RHEL)
  • openssl (RPM openssl-devel untuk OS kompatibel RHEL)
  • zlib (RPM zlib-devel untuk OS kompatibel RHEL)
  • File header Slurm (slurm/slurm.h dan sejenisnya) harus tersedia di host kamu

Lingkungan runtime memerlukan:

  • gcc (RPM libgcc untuk OS kompatibel RHEL)
  • openssl (RPM openssl-libs untuk OS kompatibel RHEL)
  • zlib (RPM zlib untuk OS kompatibel RHEL)

Mengonfigurasi sumber daya kuantum yang tersedia​

Repositori ini berisi contoh konfigurasi (qrmi_config.json.example).

Array resources berisi sekumpulan sumber daya kuantum yang tersedia. Setiap definisi sumber daya kuantum mengandung hal berikut:

PropertiDeskripsi
nameNama sumber daya kuantum (misalnya, nama Backend)
typeTipe sumber daya (direct-access, qiskit-runtime-service dan pasqal-cloud)
environmentSekumpulan variabel lingkungan untuk bekerja dengan QRMI. Implementasi saat ini mengasumsikan endpoint API dan kredensial ditentukan melalui pengaturan variabel lingkungan

Jika pengguna menentukan sumber daya dengan opsi --qpu yang tidak didefinisikan dalam file qrmi_config.json, spesifikasi tersebut akan diabaikan.

Jika pengguna menetapkan variabel lingkungan yang diperlukan untuk eksekusi job sendiri, tidak perlu menentukannya di file ini. Dalam kasus ini, properti environment akan berupa {}.

catatan

Jika kamu menggunakan sumber daya QPU dengan tipe sumber daya qiskit-runtime-service, gunakan akun yang mendukung pembukaan Session, seperti akun Premium Plan.

Jika kamu menggunakan akun yang tidak mendukung pembukaan Session, seperti akun Open Plan, tambahkan QRMI_IBM_QRS_SESSION_MODE="batch" ke daftar variabel lingkungan di qrmi_config.json sebagai solusi sementara.

Instalasi​

Jalankan build menggunakan make dan cmake:

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

Secara default, file CMakeLists.txt mengharapkan file header Slurm (slurm.h) berada di /usr/include/slurm, tapi ini bisa dikustomisasi seperti yang ditunjukkan di bawah.

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

Jika langkah build di atas berhasil, library shared Linux bernama spank_qrmi.so akan dibuat di direktori build/.

Selain itu, tambahkan satu baris berikut ke /etc/slurm/plugstack.conf di node tempat plugin ini dipasang (perhatikan bahwa administrator perlu membuat file qrmi_config.json dan menentukan path-nya sebagai argumen plugin, seperti berikut):

optional /usr/lib64/slurm/spank_qrmi.so /etc/slurm/qrmi_config.json
catatan

Kamu bisa menggunakan argumen opsional yang tersedia untuk menambahkan variabel lingkungan ke proses Slurm tempat plugin SPANK dimuat. Format untuk menentukan variabel lingkungan didefinisikan sebagai berikut.

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

Misalnya, saat berinteraksi dengan sumber daya kuantum melalui proxy HTTP, variabel lingkungan http_proxy, https_proxy, dan no_proxy diperlukan. Ini bisa ditambahkan seperti yang ditunjukkan di bawah.

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

Untuk node allocator, kamu tidak perlu menentukan path ke qrmi_config.json, seperti berikut.

optional /usr/lib64/slurm/spank_qrmi.so

Tabel berikut menunjukkan node konteks Slurm mana file-file ini harus disalin. Untuk detail lebih lanjut tentang setiap konteks, lihat dokumentasi untuk plugin SPANK.

FileKonteks Slurm
plugstack.conflocal, remote, allocator, slurmd, dan job_script
qrmi_config.jsonremote (Node komputasi)
spank_qrmi.soallocator dan remote (Node login dan node komputasi)
catatan

Setelah plugstack.conf diperbarui, plugin SPANK akan dimuat saat runtime selama peluncuran job berikutnya, yang berarti administrator tidak perlu me-restart cluster Slurm.

Setelah kamu menyelesaikan instalasi, kamu akan menemukan opsi --qpu=names di pesan bantuan sbatch.

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

Logging​

Plugin ini menggunakan logger Slurm untuk logging. Pesan log dari plugin ini bisa ditemukan di /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

Kamu bisa mengaktifkan log runtime QRMI dengan menentukan argumen srun berikut.

Opsi sbatch/srunLevel log Slurm (SRUN_DEBUG)Level log QRMI (RUST_LOG)
(default)3info
--quiet2error
--verbose4debug
-vv atau lebih5trace

Pertimbangan untuk beberapa QPU​

Saat runtime, setiap instance QRMI terhubung ke satu sumber daya QPU. Untuk memungkinkan penggunaan beberapa sumber daya kuantum dalam satu skrip job, plugin ini menetapkan variabel lingkungan dengan nama sumber daya sebagai prefiks. Misalnya, jika --qpu=qpu1,qpu2 ditentukan, variabel lingkungan akan ditetapkan sebagai berikut:

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

Ini memastikan bahwa setiap instance QRMI beroperasi dengan parameter konfigurasi yang ditetapkan untuk sumber dayanya masing-masing selama eksekusi job Slurm.

Pengaturan variabel lingkungan di atas hanya diterapkan pada job yang opsi --qpu=names-nya ditentukan.

Plugin ini juga menetapkan dua variabel lingkungan berikut, yang dirujuk oleh kode primitif QRMI.

Variabel lingkunganDeskripsi
SLURM_JOB_QPU_RESOURCESDaftar sumber daya QPU yang dipisahkan koma untuk digunakan saat runtime. Sumber daya yang tidak terdokumentasi akan difilter. Misalnya, qpu1,qpu2
SLURM_JOB_QPU_TYPESDaftar tipe sumber daya yang dipisahkan koma (direct-access, qiskit-runtime-service, dan pasqal-cloud). Misalnya, direct-access,pasqal-cloud
Source: IBM Quantum docs β€” updated 16 Jan 2026
English version on doQumentation β€” updated 7 Mei 2026
This translation based on the English version of 11 Mar 2026