QDMI v1.1.0
Quantum Device Management Interface
Loading...
Searching...
No Matches
client.h
Go to the documentation of this file.
1/*------------------------------------------------------------------------------
2Copyright 2024 Munich Quantum Software Stack Project
3
4Licensed under the Apache License, Version 2.0 with LLVM Exceptions (the
5"License"); you may not use this file except in compliance with the License.
6You may obtain a copy of the License at
7
8https://github.com/Munich-Quantum-Software-Stack/QDMI/blob/develop/LICENSE
9
10Unless required by applicable law or agreed to in writing, software
11distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13License for the specific language governing permissions and limitations under
14the License.
15
16SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
17------------------------------------------------------------------------------*/
18
23#pragma once
24
25#include "qdmi/constants.h" // IWYU pragma: export
26#include "qdmi/types.h" // IWYU pragma: export
27
28#ifdef __cplusplus
29#include <cstddef>
30
31extern "C" {
32#else
33#include <stddef.h>
34#endif
35
36// The following clang-tidy warning cannot be addressed because this header is
37// used from both C and C++ code.
38// NOLINTBEGIN(performance-enum-size, modernize-use-using)
39
63typedef struct QDMI_Device_impl_d *QDMI_Device;
64
88typedef struct QDMI_Session_impl_d *QDMI_Session;
89
107
161
164
214 QDMI_Session_Parameter param, size_t size,
215 const void *value);
216
238
275
278
333 QDMI_Session_Property prop, size_t size,
334 void *value, size_t *size_ret);
335
344
345 // end of client_session_interface
346
403 QDMI_Device_Property prop, size_t size,
404 void *value, size_t *size_ret);
405
457 QDMI_Site_Property prop, size_t size,
458 void *value, size_t *size_ret);
459
542 QDMI_Device device, QDMI_Operation operation, size_t num_sites,
543 const QDMI_Site *sites, size_t num_params, const double *params,
544 QDMI_Operation_Property prop, size_t size, void *value, size_t *size_ret);
545
546 // end of client_query_interface
547
575typedef struct QDMI_Job_impl_d *QDMI_Job;
576
594
648
651
703 const void *value);
704
721
736
752
767
818int QDMI_job_get_results(QDMI_Job job, QDMI_Job_Result result, size_t size,
819 void *data, size_t *size_ret);
820
828
829 // end of client_job_interface
830
831 // end of client_interface
832
833// NOLINTEND(performance-enum-size, modernize-use-using)
834
835#ifdef __cplusplus
836} // extern "C"
837#endif
Defines all enums used within QDMI across the QDMI Client Interface and the QDMI Device Interface.
enum QDMI_JOB_STATUS_T QDMI_Job_Status
Job status type.
Definition constants.h:386
enum QDMI_JOB_RESULT_T QDMI_Job_Result
Job result type.
Definition constants.h:644
enum QDMI_SITE_PROPERTY_T QDMI_Site_Property
Site property type.
Definition constants.h:317
enum QDMI_OPERATION_PROPERTY_T QDMI_Operation_Property
Operation property type.
Definition constants.h:362
enum QDMI_DEVICE_PROPERTY_T QDMI_Device_Property
Device property type.
Definition constants.h:248
struct QDMI_Device_impl_d * QDMI_Device
A handle for a device implementing the QDMI Device Interface.
Definition client.h:63
int QDMI_job_submit(QDMI_Job job)
Submit a job to the device.
QDMI_JOB_PARAMETER_T
Enum of the job parameters that can be set.
Definition client.h:600
enum QDMI_JOB_PARAMETER_T QDMI_Job_Parameter
Job parameter type.
Definition client.h:650
int QDMI_job_set_parameter(QDMI_Job job, QDMI_Job_Parameter param, size_t size, const void *value)
Set a parameter for a job.
void QDMI_job_free(QDMI_Job job)
Free a job.
int QDMI_device_create_job(QDMI_Device device, QDMI_Job *job)
Create a job.
struct QDMI_Job_impl_d * QDMI_Job
A handle for a client-side job.
Definition client.h:575
int QDMI_job_get_results(QDMI_Job job, QDMI_Job_Result result, size_t size, void *data, size_t *size_ret)
Retrieve the results of a job.
int QDMI_job_wait(QDMI_Job job)
Wait for a job to finish.
int QDMI_job_cancel(QDMI_Job job)
Cancel an already submitted job.
int QDMI_job_check(QDMI_Job job, QDMI_Job_Status *status)
Check the status of a job.
@ QDMI_JOB_PARAMETER_CUSTOM1
This enum value is reserved for a custom parameter.
Definition client.h:638
@ QDMI_JOB_PARAMETER_CUSTOM4
Definition client.h:644
@ QDMI_JOB_PARAMETER_SHOTSNUM
size_t The number of shots to execute for a quantum circuit job.
Definition client.h:623
@ QDMI_JOB_PARAMETER_CUSTOM3
Definition client.h:642
@ QDMI_JOB_PARAMETER_CUSTOM5
Definition client.h:646
@ QDMI_JOB_PARAMETER_CUSTOM2
Definition client.h:640
@ QDMI_JOB_PARAMETER_MAX
The maximum value of the enum.
Definition client.h:631
@ QDMI_JOB_PARAMETER_PROGRAM
void* The program to be executed.
Definition client.h:618
@ QDMI_JOB_PARAMETER_PROGRAMFORMAT
QDMI_Program_Format The format of the program to be executed.
Definition client.h:608
int QDMI_device_query_device_property(QDMI_Device device, QDMI_Device_Property prop, size_t size, void *value, size_t *size_ret)
Query a device property.
int QDMI_device_query_operation_property(QDMI_Device device, QDMI_Operation operation, size_t num_sites, const QDMI_Site *sites, size_t num_params, const double *params, QDMI_Operation_Property prop, size_t size, void *value, size_t *size_ret)
Query an operation property.
int QDMI_device_query_site_property(QDMI_Device device, QDMI_Site site, QDMI_Site_Property prop, size_t size, void *value, size_t *size_ret)
Query a site property.
void QDMI_session_free(QDMI_Session session)
Free a session.
int QDMI_session_set_parameter(QDMI_Session session, QDMI_Session_Parameter param, size_t size, const void *value)
Set a parameter for a session.
struct QDMI_Session_impl_d * QDMI_Session
A handle for a session.
Definition client.h:88
int QDMI_session_query_session_property(QDMI_Session session, QDMI_Session_Property prop, size_t size, void *value, size_t *size_ret)
Query a property of a session.
QDMI_SESSION_PROPERTY_T
Enum of the session properties that can be queried via QDMI_session_query_session_property.
Definition client.h:245
int QDMI_session_alloc(QDMI_Session *session)
Allocate a new session.
QDMI_SESSION_PARAMETER_T
Enum of the session parameters that can be set via QDMI_session_set_parameter.
Definition client.h:114
enum QDMI_SESSION_PARAMETER_T QDMI_Session_Parameter
Session parameter type.
Definition client.h:163
enum QDMI_SESSION_PROPERTY_T QDMI_Session_Property
Session property type.
Definition client.h:277
int QDMI_session_init(QDMI_Session session)
Initialize a session.
@ QDMI_SESSION_PROPERTY_CUSTOM3
Definition client.h:269
@ QDMI_SESSION_PROPERTY_CUSTOM2
Definition client.h:267
@ QDMI_SESSION_PROPERTY_CUSTOM1
This enum value is reserved for a custom property.
Definition client.h:265
@ QDMI_SESSION_PROPERTY_CUSTOM5
Definition client.h:273
@ QDMI_SESSION_PROPERTY_MAX
The maximum value of the enum.
Definition client.h:258
@ QDMI_SESSION_PROPERTY_DEVICES
QDMI_Device* (QDMI_Device list) The devices the client has access to.
Definition client.h:250
@ QDMI_SESSION_PROPERTY_CUSTOM4
Definition client.h:271
@ QDMI_SESSION_PARAMETER_CUSTOM1
This enum value is reserved for a custom parameter.
Definition client.h:151
@ QDMI_SESSION_PARAMETER_CUSTOM3
Definition client.h:155
@ QDMI_SESSION_PARAMETER_MAX
The maximum value of the enum.
Definition client.h:144
@ QDMI_SESSION_PARAMETER_CUSTOM5
Definition client.h:159
@ QDMI_SESSION_PARAMETER_CUSTOM2
Definition client.h:153
@ QDMI_SESSION_PARAMETER_CUSTOM4
Definition client.h:157
@ QDMI_SESSION_PARAMETER_USERNAME
char* (string) The username to use for the session.
Definition client.h:128
@ QDMI_SESSION_PARAMETER_TOKEN
char* (string) The token to use for the session.
Definition client.h:121
@ QDMI_SESSION_PARAMETER_PROJECTID
char* (string) The project ID to use for the session.
Definition client.h:135
Defines all types used within QDMI across the QDMI Client Interface and the QDMI Device Interface.
struct QDMI_Site_impl_d * QDMI_Site
A handle for a site.
Definition types.h:53
struct QDMI_Operation_impl_d * QDMI_Operation
A handle for an operation.
Definition types.h:72