Speaker
Description
PyCOMPSs, the Python version of COMPSs (BSC), recognized only classical processors for tasks, with no direct support for Quantum Processing Units (QPUs), which only had an experimental implementation via the Qdislib approach. To overcome this limitation, PyCOMPSs was modified to support QPUs as an additional processor type, alongside the already supported CPUs and GPUs. Using this extension, tasks can now be configured to request QPUs. This includes a new qpus_per_node parameter, which enables users to request quantum resources; a new QPU type for the @constraint decorator, which declares the required processor type of a task; and a specific index for each task to select its QPU at runtime. For implementing and testing the solution, CUNQA, a distributed quantum infrastructure emulator, was used. This framework emulates one or several QPUs as available devices of the infrastructure (virtual QPUs, vQPUs). Also, to integrate CUNQA with SLURM so PyCOMPSs can detect and manage jobs, a SLURM SPANK plugin was developed to make vQPUs visible to SLURM at job launch, injecting the CUNQA family of the vQPUs as an environment variable, enabling quantum-classical task scheduling. For testing and evaluating the new system, PyCOMPSs was executed on Qmio HPC nodes, running a scalability test with the classical KMeans benchmark before and after the modification, confirming no impact on non-vQPU users. To check the new quantum-classical environment, a CHSH test, which parallelized tasks using vQPUs, confirmed the scheduling of the tasks to the virtual QPUs of the infrastructure and the satisfactory scalability of the modified version for this kind of job.