Euro-Q-Exa (LRZ)¶
Official pages
Munich Quantum Portal: tokens, jobs and device status
LRZ: HPCQC System Access and HPCQC Job Submission via MQSS-Adapter (the HPC route, which the app does not use)
MQSS Interfaces Documentation, with the MQSS adapter guide
Support: the LRZ Servicedesk, service “Consulting Quantum Computing”, https://servicedesk.lrz.de/en/simplesubmit/164
To get an account and a first job: the lesson page A few details on Euro-Q-Exa.
Access |
the REST interface of the Munich Quantum Portal, |
Token |
make one on the Tokens page of the portal, and set |
Manifest |
|
Limits |
3,000,000 shots times gates a job (below). The public portal code has two active jobs per user and resource, and 24 hours for a job sent with |
Billing |
wall-clock QPU seconds (LRZ); the records hold the app’s own measure (Billing and usage) |
Status |
LRZ puts each user on a mailing list for notices on the system; users cannot send to it. The Resources section of the portal shows the device status, for example online or maintenance (portal FAQ) |
Calibration |
usually daily, at night, about 1.5 hours, at times several hours, and it can affect running jobs (LRZ). A way to see the last one is under development (portal FAQ). LRZ’s page Euro-Q-Exa regular user operation announces an upgrade that offers 150 qubits |
Compiling and no_modify¶
Without no_modify, the MQSS pipeline of the site compiles and optimises the circuit (portal FAQ). The
record does not hold the compiled circuit: the job page of the portal shows it under Executed Circuit, and
the logs of a failed job in its Note field (portal FAQ).
"no_modify": true asks the site not to compile. The circuit must then be in the native gates (r, cz,
measure, barrier) and on coupled pairs. The dry run checks the gate names against a saved read
(qdevices check euroqexa --live --manifest FILE). The LRZ training material of the pilot phase compiles a
circuit locally for EQE1, with a chosen qubit layout, and sends it with no_modify (its example 03). The
MQSS adapter guide notes: “The transpilation at user end may not be supported for some backends.”
Pairs. With no_modify, the dry run and a live call check each two-qubit gate against the cz loci of
the read. A pair listed in neither order fails, and nothing is sent. A pair listed only the other way round
is a note. A note also says when the check was not made: for a text it cannot read (for example several
quantum registers, a range of qubits, or physical qubits), or a read with no readable cz loci.
Layout. The pairs of the read are the layout (The layout pin). When the layout differs from the pin,
a live call stops before its first job (a stop check, with the qubits and pairs then and now). Without
the pin there is no such check; the read line still holds the layout.
Shots times gates¶
A job may hold at most 3,000,000 shots times gates, summed over the circuits of a batch (LRZ). The app sends one circuit a job, and counts the gates in the text it sends:
Statement |
Counts |
|---|---|
each application of a gate, measure, reset |
once |
a statement on whole registers, such as |
once for each qubit of the register |
a call of a gate that the text defines ( |
the operations of its body, calls in it in turn, 32 deep at most |
a statement under |
as above, 32 deep at most |
barrier, declarations, includes, |
not at all |
The dry run gives the gates and the shots times gates of each job, and fails a job above the limit. Before
each job the rule shots_times_gates checks the same: above the limit it stops the call with exit code 2,
and nothing is sent for that job (Rules). A job at the limit goes. Above it, use fewer shots or a
shorter circuit; a record that has sent jobs cannot go on with a changed manifest (send on Commands).
Some texts cannot be counted: for example a modifier such as ctrl @, delay, a physical qubit such as
$0, a range of qubits, nesting deeper than 32, or a gate that calls itself. The dry run then shows
gates not counted with a note, and the rule passes with a note: check the job yourself against
3,000,000. Without no_modify the site’s count can be higher than the app’s; the dry run notes it.
Times¶
The site writes timestamp_submitted, timestamp_scheduled and timestamp_completed with no zone. They
appear to be local time in Germany (two hours ahead of UTC in summer, in the release gate). The app reads
them as UTC+2 from 01:00 UTC on the last Sunday of March to 01:00 UTC on the last Sunday of October, and
UTC+1 at any other time; in the hour that the October change repeats, it takes the reading nearest its own
time of the job request. The result line keeps the stamps, and adds scheduled_utc, completed_utc and
zone_check. With zone_check true, the seconds run from scheduled_utc to completed_utc. It is
false when the record has neither time for the job, timestamp_submitted is more than 5 minutes from it,
or a stamp cannot be read so or has two readings: the seconds are then the plain difference of the stamps,
and could be one hour off.
Traps¶
An answer of HTTP 400 or 422 to the job request is a refusal only when its body has a word that starts with
cz,pair,coupler,direction,locus,loci,qubit,no_modify,gateornativeand ends there or with ans, in upper or lower case:gatesis such a word,gatewayis not. Any other answer with no job id, or no answer, is unknown (Live runs).A 403 is not always a fault of the token. In the release gate a token that worked before and after got a 403 while the portal login failed with Internal Server Error; the cause is not known. Check the portal login before you make a new token.
In the release gate a Bell job in
handcx, sent for the site to compile, stayed WAITING for days while the machine was online with no job pending; the cause is not known. It came back after four days, never cancelled, with 100 of 100 shots and 342,011.9 s from scheduled to completed: not device time (inferred). The rulejob_timestopped the order. Such a result counts atjob_seconds_limitafterqdevices resolve RECORD ORDER --over-limit(Billing and usage).euroqexa-one-qubitis also sent for the site to compile.
Sources: References