Skip to content

add UX documentation #61

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

add UX documentation #61

wants to merge 2 commits into from

Conversation

utzb
Copy link
Collaborator

@utzb utzb commented Apr 11, 2025

Description of Change

Move UX (admin experience, user experience, application aspects) to own document, explain concepts better.

Checklist ✅

  • Have you included a description of this change?
  • Have you updated the relevant documentation to reflect this change?
  • Have you made sure CI is passing before requesting a review?

Ticket

  • Fixes #
  • Is Part of #

@utzb
Copy link
Collaborator Author

utzb commented Apr 11, 2025

@ohtanim Thank you for your comments. Please check out the Direct Access section again -- it contains some ideas to cover some requirements and please do not hesitate to change it!
Likewise for the Qiskit Runtime Service section.

Copy link
Member

@mrossinek mrossinek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Finally had time to give this a read. Here are some comments/thoughts/questions.


Slurm QPU resource definitions determine what physical resources can be used by slurm jobs.
User source code should be agnostic to specific backend instances and even backend types as far as possible.
This keeps source code portable while the QPU seletion criteria are part of the resource definition (which is considered configuration as opposed to source code).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This keeps source code portable while the QPU seletion criteria are part of the resource definition (which is considered configuration as opposed to source code).
This keeps source code portable while the QPU selection criteria are part of the resource definition (which is considered configuration as opposed to source code).

### HPC admin scope

HPC administrators configure, what physical resources can be provided to slurm jobs.
Note sensitivethe config could contain sensitive information and m
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Note sensitivethe config could contain sensitive information and m
Note that the config could contain sensitive information and m

Not sure what @utzb might have wanted to continue writing at the end here..

Note sensitivethe config could contain sensitive information and m

```
# slurm quauntum plugin configuration
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# slurm quauntum plugin configuration
# slurm quantum plugin configuration

Comment on lines +43 to +56
# DA backend
name=da-local-backend \
url=https://da-endpoint.my-local.domain/ \
da_crn=crn:v1:bluemix:public:quantum-computing:us-east:a/43aac17... \
da_apikey_file=/root/da_apikey \
s3_url=https://s3.my-local.domain/... \
s3_accesstoken_file=/root/s3_accesstoken

# QRS backends
name=ibm_fez \
type=qiskit-runtime-service-ibmcloud

name=ibm_marrakesh \
type=qiskit-runtime-service-ibmcloud
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might just not have seen this config format before, but where does this get parsed and how will that system handle repeating keys (e.g. the name key being re-used without "sections")?

Comment on lines +80 to +81
#SBATCH --qpu=my_qpu_resource
#SBATCH --qpu-name=ibm_fez
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Am I understanding correctly that the reason for setting --qpu=my_qpu_resource is that the application that gets srun below can then always refer to my_qpu_resource as the reference via which it then redirects to the actual resource (here: ibm_fez, specified via its name)? I.e. I could simply change ibm_fez to ibm_marrakesh and would not need to update the application code because it goes via the my_qpu_resource definition "redirect"?

from qrmi import IBMDirectAccessSamplerV2 as SamplerV2

# Generate transpiler target from backend configuration & properties
target = get_target(slurm_resource_name=“my_qpu_resource”)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Building on top of my previous comment, this still "couples" this application code to how the user configures sbatch. Can we not do something like:

target = get_target(slurm_resource_name=os.environ["SLURM_QPU_NAME"])

where the SLURM_QPU_NAME environment variable gets automatically exported by our plugin?

See e.g. sbatch's output env variables.


More specifically, in the context of a spank plugin we might obtain SPANK_... (e.g. SPANK_QPU_NAME) according to https://slurm.schedmd.com/spank.html

Functions are also available from within the SPANK plugins to establish environment variables to be exported to the Slurm PrologSlurmctld, Prolog, Epilog and EpilogSlurmctld programs (the so-called job control environment). The name of environment variables established by these calls will be prepended with the string SPANK_ in order to avoid any security implications of arbitrary environment variable control. (After all, the job control scripts do run as root or the Slurm user.).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we would implement something like the above, the HPC user interface could be simplified down to a single --qpu-... specifier and would ensure that users don't need to look up the correct redirect name for pre-built applications (e.g.). It would also ensure some consistency across applications.


I am not sure how this plays out for multi-QPU jobs though... but I also do not see that laid out for the current proposal either..

Access credentials should not visible to HPC users or other non-privileged users on the system.
Therefore, sensitive data is put in separate files which can be access protected accordingly.

Note that all users share the same access and hence need appropriate user vetting before getting access to quantum resources.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Does that mean that per-user/per-group quota is then fully off-loaded to be tracked by the HPC admins? (to be clear, I am fine with that, if so)
  • What does this imply for job monitoring capabilities? I.e. when querying job information from the DA API, who will be in charge of filtering the data down to the correct user/group?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants