Skip to main content
IBM Quantum Platform

QkTranspiler

La qk_transpile() función expone el compilador de Qiskit (qiskit.transpiler) a C. La funcionalidad básica utiliza el mismo código subyacente que la versión Python -space, pero el transpilador tal y como se presenta en C tiene más limitaciones que el que se ofrece en Python. El transpilador parte de la base de que el circuito se ha creado utilizando exclusivamente la API de C y está diseñado para funcionar únicamente en el caso de una API de C independiente. Es posible que no funcione correctamente en un caso de uso mixto de « Python » y «/C». Si estás combinando circuitos de tipo C y de tipo « Python », debes llamar a las generate_preset_pass_manager() funciones transpile() o para esos circuitos.


Tipos de datos

QkTranspileResult

struct QkTranspileResult

El objeto contenedor de resultados de qk_transpile

Cuando el transpilador compila correctamente un circuito cuántico para un objetivo determinado, devuelve el circuito transpilado y el diseño. La función qk_transpile escribirá punteros a los campos de esta estructura cuando se ejecute con éxito, puede inicializar esta estructura con punteros nulos o dejarlos sin establecer ya que los valores nunca son leídos por qk_transpile y sólo escritos. Después de llamar a qk_transpile usted es responsable de llamar a qk_circuit_free y qk_transpile_layout_free en los miembros de esta estructura.

QkCircuit *circuito

El circuito compilado.

QkTranspileLayout *diseño

Metadatos sobre los diseños iniciales y finales de virtual a físico.

QkTranspileOptions

struct QkTranspileOptions

Las opciones para ejecutar el transpilador

uint8_t nivel_de_optimización

El nivel de optimización con el que se ejecutará el transpilador. Los valores válidos son 0, 1, 2 ó 3.

int64_t semilla

La semilla para el transpilador. Si se establece en un número negativo, significa que no se establecerá ninguna semilla y que los RNG utilizados en el transpilador se sembrarán a partir de la entropía del sistema.

doble aproximación_grado

El grado de aproximación un dial heurístico donde 1.0 significa ninguna aproximación (hasta tolerancia numérica) y 0.0 significa la máxima aproximación. Un valor NAN indica que se permite la aproximación hasta la tasa de error notificada para una operación en el objetivo.

QkTranspilerStageState

struct QkTranspilerStageState

Un contenedor que recoge los atributos individuales compartidos por las etapas del transpilador. Cuando la transpilación se realiza correctamente, cada etapa escribe en este contenedor los atributos específicos que necesitarán las siguientes etapas. Si el contenedor no está inicializado, cada etapa inicializará un nuevo objeto cuando sea necesario.

qk_transpile_state_new

void qk_transpile_state_new(QkTranspilerStageState **state)

Crear un puntero a un objeto QkTranspilerStageState vacío

Seguridad

El comportamiento es indefinido si no state es un puntero válido asignado.

Parámetros

  • state : un puntero al espacio de memoria asignado para almacenar el puntero.

qk_transpile_state_free

void qk_transpile_state_free(QkTranspilerStageState *state)

Liberar un QkTranspilerStageState objeto

Seguridad

El comportamiento es indefinido si no state es un puntero válido y no nulo a un QkTranspilerStageState.

Parámetros

  • state : un puntero al estado que se va a liberar

qk_transpile_state_layout

QkTranspileLayout *qk_transpile_state_layout(QkTranspilerStageState *state)

Obtiene un QkTranspileLayout objeto a partir de un QkTranspilerStageState objeto.

Este puntero pertenece al objeto state y no debe liberarse mediante qk_transpile_layout_free. En su lugar, libera el objeto state original utilizando qk_transpile_state_free.

Seguridad

El comportamiento es indefinido si no state es un puntero válido y no nulo a un QkTranspilerStageState.

Parámetros

  • estado : un puntero al estado del que se va a recuperar el diseño.

Devuelve

un puntero a un QkTranspileLayout objeto que pertenece al estado.

qk_transpile_state_layout_set

void qk_transpile_state_layout_set(QkTranspilerStageState *state, QkTranspileLayout *layout)

Establece un QkTranspileLayout objeto como diseño para otro QkTranspilerStageState objeto.

Al llamar a este método se consume el QkTranspileLayout objeto, lo que significa que el usuario no tendrá que llamar a qk_transpile_layout_free. El usuario debe desasignar el espacio que se le ha asignado mediante free.

Seguridad

El comportamiento es indefinido si no state es un puntero válido y no nulo a un QkTranspilerStageState. El comportamiento es indefinido si no state es un puntero válido a un QkTranspileLayout.

Parámetros

  • estado : un puntero al estado para el que se va a definir el diseño.
  • diseño : un puntero al diseño que se va a utilizar. Quizás sea NULL para desactivar el diseño.

Funciones

qk_transpiler_default_options

QkTranspileOptions qk_transpiler_default_options(void)

Generar opciones predeterminadas del transpilador

Esta función genera un QkTranspileOptions con la configuración por defecto Esta actualmente es optimization_level 2, sin semilla, y sin aproximación.

Devuelve

Un QkTranspileOptions objeto con la configuración predeterminada.

qk_transpile_stage_init

QkExitCode qk_transpile_stage_init(QkDag *dag, const QkTarget *target, const QkTranspileOptions *options, QkTranspilerStageState **state, char **error)

Ejecuta la etapa de inicialización preestablecida del transpilador en un circuito

El transpilador Qiskit es un compilador de circuitos cuánticos que reescribe un circuito de entrada dado para que se ajuste a las restricciones de una QPU y optimiza el circuito para su ejecución. Esta función ejecuta la primera etapa del transpilador, init, que realiza optimizaciones de circuitos abstractos y reduce las operaciones de múltiples qubits a operaciones de uno y dos qubits. Para obtener más información, consulte la etapa de inicialización.

Esta función solo debe utilizarse con circuitos construidos utilizando la API C de Qiskit. Hace suposiciones sobre el circuito utilizando únicamente características expuestas a través de C. Si se encuentra en un entorno mixto de Python y C, normalmente es mejor invocar el transpilador a través de Python.

Esta función es multihilo internamente y lanzará un pool de hilos con hilos igual al número de CPUs reportadas por el sistema operativo por defecto. Esto incluirá núcleos lógicos en CPUs con multihilo simultáneo. Puede ajustar el número de hilos con la variable de entorno RAYON_NUM_THREADS . Por ejemplo, configurando RAYON_NUM_THREADS=4 se limitaría el pool de hilos a 4 hilos.

Seguridad

El comportamiento es indefinido si dag, target, o no son punteros válidos y statedistintos de nulos a un QkDag, QkTarget, o un QkTranspileLayout puntero, respectivamente. options debe ser un puntero válido a a QkTranspileOptions o NULL. error debe ser un puntero válido a un char puntero o NULLa. Esta función sobrescribirá el valor del state puntero interno de. Si es necesario liberar el valor al que apunta, esto debe hacerse fuera de esta función, ya que esta función no lo liberará.

Parámetros

  • dag : un puntero al circuito en el que se ejecutará el transpilador.
  • target - Un puntero al objetivo para el que compilar el circuito.
  • options - Un puntero a un objeto options que define las opciones del usuario. Si es un puntero nulo, se utilizarán los valores por defecto. Consulte qk_transpile_default_options para obtener más información sobre los valores por defecto.
  • estado : un puntero a un puntero a un QkTranspilerStageState objeto. Si la ejecución se realiza correctamente (código de retorno 0), se asignará a este puntero un puntero al objeto de estado creado por el transpilador.
  • error : un puntero a un puntero con una cadena terminada en nulo con una descripción del error. Si el transpilador falla, se escribirá un puntero a la cadena con la descripción del error en este puntero. Ese puntero debe liberarse con qk_str_free. Esto puede ser un puntero nulo, en cuyo caso el error no se registrará.

Devuelve

El código de retorno del transpilador, QkExitCode_Success significa éxito y todos los demás valores indican un error.

qk_transpile_stage_routing

QkExitCode qk_transpile_stage_routing(QkDag *dag, const QkTarget *target, const QkTranspileOptions *options, QkTranspilerStageState *state, char **error)

Ejecuta la etapa de enrutamiento preestablecida del transpilador en un circuito

El transpilador Qiskit es un compilador de circuitos cuánticos que reescribe un circuito de entrada dado para que se ajuste a las restricciones de una QPU y optimiza el circuito para su ejecución. Esta función ejecuta la tercera etapa del gestor de pasadas preestablecidas, el enrutamiento, que traduce todas las instrucciones del circuito a aquellas compatibles con el objetivo. Para obtener más información, consulte la etapa de enrutamiento.

Esta función solo debe utilizarse con circuitos construidos utilizando la API C de Qiskit. Hace suposiciones sobre el circuito utilizando únicamente características expuestas a través de C. Si se encuentra en un entorno mixto de Python y C, normalmente es mejor invocar el transpilador a través de Python.

Esta función es multihilo internamente y lanzará un pool de hilos con hilos igual al número de CPUs reportadas por el sistema operativo por defecto. Esto incluirá núcleos lógicos en CPUs con multihilo simultáneo. Puede ajustar el número de hilos con la variable de entorno RAYON_NUM_THREADS . Por ejemplo, configurando RAYON_NUM_THREADS=4 se limitaría el pool de hilos a 4 hilos.

Seguridad

El comportamiento es indefinido si dag, target, o layout, no son punteros válidos y distintos de nulo a un QkDag, QkTarget, o un QkTranspileLayout puntero, respectivamente. options Debe ser un puntero válido a a QkTranspileOptions o NULL. error Debe ser un puntero válido a un char puntero o NULL.

Parámetros

  • dag : un puntero al circuito en el que se ejecutará el transpilador.
  • target - Un puntero al objetivo para el que compilar el circuito.
  • options - Un puntero a un objeto options que define las opciones del usuario. Si es un puntero nulo, se utilizarán los valores por defecto. Consulte qk_transpile_default_options para obtener más información sobre los valores por defecto.
  • state : un puntero a un puntero a un QkTranspilerStageState objeto que contiene la estructura. Por lo general, tendrás que ejecutar la qk_transpile_stage_layout función antes de esta, lo que te proporcionará un QkTranspilerStageState objeto con la disposición inicial configurada. Quieres tomar el valor de salida de esa función y utilizarlo como entrada para esta. Si no tienes un objeto de diseño (por ejemplo, si has ejecutado tu propia pasada de diseño). Puedes ejecutar qk_transpile_layout_generate_from_mapping para generar una disposición trivial (en la que el qubit virtual 0 del circuito se asigna al qubit físico 0 del destino, 1->1, 2->2, etc.) para el DAG en su estado actual. Esto te permitirá generar un objeto de diseño para la fase de enrutamiento si creas tu propio diseño.
  • error : un puntero a un puntero con una cadena terminada en nulo con una descripción del error. Si el transpilador falla, se escribirá un puntero a la cadena con la descripción del error en este puntero. Ese puntero debe liberarse con qk_str_free. Esto puede ser un puntero nulo, en cuyo caso el error no se registrará.

Devuelve

El código de retorno del transpilador, QkExitCode_Success significa éxito y todos los demás valores indican un error.

qk_transpile_stage_optimization

QkExitCode qk_transpile_stage_optimization(QkDag *dag, const QkTarget *target, const QkTranspileOptions *options, char **error, QkTranspilerStageState *state)

Ejecuta la etapa de optimización preestablecida del transpilador en un circuito

El transpilador Qiskit es un compilador de circuitos cuánticos que reescribe un circuito de entrada dado para que se ajuste a las restricciones de una QPU y optimiza el circuito para su ejecución. Esta función ejecuta la cuarta etapa del gestor de pasadas preestablecidas, la optimización, que optimiza el circuito para el objetivo dado después de que el circuito se haya transformado en un circuito físico. Para obtener más información, consulte la etapa de optimización.

Esta función solo debe utilizarse con circuitos construidos utilizando la API C de Qiskit. Hace suposiciones sobre el circuito utilizando únicamente características expuestas a través de C. Si se encuentra en un entorno mixto de Python y C, normalmente es mejor invocar el transpilador a través de Python.

Esta función es multihilo internamente y lanzará un pool de hilos con hilos igual al número de CPUs reportadas por el sistema operativo por defecto. Esto incluirá núcleos lógicos en CPUs con multihilo simultáneo. Puede ajustar el número de hilos con la variable de entorno RAYON_NUM_THREADS . Por ejemplo, configurando RAYON_NUM_THREADS=4 se limitaría el pool de hilos a 4 hilos.

Seguridad

El comportamiento es indefinido si dag y no target son punteros válidos y distintos de nulo a un QkDago un QkTarget respectivamente. options Debe ser un puntero válido a a QkTranspileOptions o NULL. error Debe ser un puntero válido a un char puntero o NULL.

Parámetros

  • dag : un puntero al circuito en el que se ejecutará el transpilador.
  • target - Un puntero al objetivo para el que compilar el circuito.
  • options - Un puntero a un objeto options que define las opciones del usuario. Si es un puntero nulo, se utilizarán los valores por defecto. Consulte qk_transpile_default_options para obtener más información sobre los valores por defecto.
  • error : un puntero a un puntero con una cadena terminada en nulo con una descripción del error. Si el transpilador falla, se escribirá un puntero a la cadena con la descripción del error en este puntero. Ese puntero debe liberarse con qk_str_free. Esto puede ser un puntero nulo, en cuyo caso el error no se registrará.
  • state : un puntero a un QkTranspilerStageState objeto que contiene la estructura. Por lo general, tendrás que ejecutar la función qk_transpile_stage_layout anterior a esta, lo que te proporcionará un QkTranspileLayout objeto con la configuración inicial deseada; a continuación, debes tomar la configuración de salida de esa función y utilizarla como entrada para esta. Si no tienes un objeto de diseño (por ejemplo, si has ejecutado tu propia pasada de diseño). Puedes ejecutar qk_transpile_layout_generate_from_mapping para generar una disposición trivial (en la que el qubit virtual 0 del circuito se asigna al qubit físico 0 del destino, 1->1, 2->2, etc.) para el DAG en su estado actual. Esto te permitirá crear un objeto de diseño para la fase de optimización si generas tu propio diseño.

Devuelve

El código de retorno del transpilador, QkExitCode_Success significa éxito y todos los demás valores indican un error.

qk_transpile_stage_translation

QkExitCode qk_transpile_stage_translation(QkDag *dag, const QkTarget *target, const QkTranspileOptions *options, char **error)

Ejecuta la etapa de traducción preestablecida del transpilador en un circuito

El transpilador Qiskit es un compilador de circuitos cuánticos que reescribe un circuito de entrada dado para que se ajuste a las restricciones de una QPU y optimiza el circuito para su ejecución. Esta función ejecuta la cuarta etapa del gestor de pasadas preestablecidas, la traducción, que traduce todas las instrucciones del circuito a aquellas compatibles con el destino. Para obtener más información, consulte la etapa de traducción.

Esta función solo debe utilizarse con circuitos construidos utilizando la API C de Qiskit. Hace suposiciones sobre el circuito utilizando únicamente características expuestas a través de C. Si se encuentra en un entorno mixto de Python y C, normalmente es mejor invocar el transpilador a través de Python.

Esta función es multihilo internamente y lanzará un pool de hilos con hilos igual al número de CPUs reportadas por el sistema operativo por defecto. Esto incluirá núcleos lógicos en CPUs con multihilo simultáneo. Puede ajustar el número de hilos con la variable de entorno RAYON_NUM_THREADS . Por ejemplo, configurando RAYON_NUM_THREADS=4 se limitaría el pool de hilos a 4 hilos.

Seguridad

El comportamiento es indefinido si dag y no target son punteros válidos y distintos de nulo a a QkDagy QkTarget respectivamente. options Debe ser un puntero válido a a QkTranspileOptions o NULL. error Debe ser un puntero válido a un char puntero o NULL.

Parámetros

  • dag : un puntero al circuito en el que se ejecutará el transpilador.
  • target - Un puntero al objetivo para el que compilar el circuito.
  • options - Un puntero a un objeto options que define las opciones del usuario. Si es un puntero nulo, se utilizarán los valores por defecto. Consulte qk_transpile_default_options para obtener más información sobre los valores por defecto.
  • error : un puntero a un puntero con una cadena terminada en nulo con una descripción del error. Si el transpilador falla, se escribirá un puntero a la cadena con la descripción del error en este puntero. Ese puntero debe liberarse con qk_str_free. Esto puede ser un puntero nulo, en cuyo caso el error no se registrará.

Devuelve

El código de retorno del transpilador, QkExitCode_Success significa éxito y todos los demás valores indican un error.

qk_transpile_stage_layout

QkExitCode qk_transpile_stage_layout(QkDag *dag, const QkTarget *target, const QkTranspileOptions *options, QkTranspilerStageState **state, char **error)

Ejecutar la etapa de diseño preestablecida del transpilador en un circuito

El transpilador Qiskit es un compilador de circuitos cuánticos que reescribe un circuito de entrada dado para que se ajuste a las restricciones de una QPU y optimiza el circuito para su ejecución. Esta función ejecuta la segunda etapa del diseño del gestor de pasadas preestablecido, que elige la asignación inicial de qubits virtuales a qubits físicos, incluida la expansión del circuito para contener ancillas explícitas. Para obtener más información, consulte la etapa de diseño.

Esta función solo debe utilizarse con circuitos construidos utilizando la API C de Qiskit. Hace suposiciones sobre el circuito utilizando únicamente características expuestas a través de C. Si se encuentra en un entorno mixto de Python y C, normalmente es mejor invocar el transpilador a través de Python.

Esta función es multihilo internamente y lanzará un pool de hilos con hilos igual al número de CPUs reportadas por el sistema operativo por defecto. Esto incluirá núcleos lógicos en CPUs con multihilo simultáneo. Puede ajustar el número de hilos con la variable de entorno RAYON_NUM_THREADS . Por ejemplo, configurando RAYON_NUM_THREADS=4 se limitaría el pool de hilos a 4 hilos.

Seguridad

El comportamiento es indefinido si dag o target, no son punteros válidos y distintos de nulo a un QkDago un QkTarget respectivamente. El comportamiento también es indefinido si no layout es un puntero válido y alineado a un puntero a un QkTranspileLayout o un puntero a un NULL puntero. options Debe ser un puntero válido a a QkTranspileOptions o NULL. error Debe ser un puntero válido a un char puntero o NULL.

Parámetros

  • dag : un puntero al circuito en el que se ejecutará el transpilador.
  • target - Un puntero al objetivo para el que compilar el circuito.
  • options - Un puntero a un objeto options que define las opciones del usuario. Si es un puntero nulo, se utilizarán los valores por defecto. Consulte qk_transpile_default_options para obtener más información sobre los valores por defecto.
  • estado : un puntero a un puntero a un QkTranspilerStageState objeto. Si la ejecución se realiza correctamente (código de retorno 0), el objeto de diseño creado por el transpilador se escribirá en el objeto de estado al que apunta este puntero. El puntero interno correspondiente puede ser nulo si no existe ningún objeto de estado o de diseño. Normalmente, si ejecutas esa función qk_transpile_stage_init , tomarías el estado de salida de la misma y utilizarías su estructura como entrada para esta. Pero si no tienes un layout, el puntero interno puede ser nulo y se asignará un nuevo objeto QkTranspilerStageState, con un layout, y ese puntero se establecerá para el valor interno del layout aquí.
  • error : un puntero a un puntero con una cadena terminada en nulo con una descripción del error. Si el transpilador falla, se escribirá un puntero a la cadena con la descripción del error en este puntero. Ese puntero debe liberarse con qk_str_free. Esto puede ser un puntero nulo, en cuyo caso el error no se registrará.

Devuelve

El código de retorno del transpilador, QkExitCode_Success significa éxito y todos los demás valores indican un error.

qk_transpile

QkExitCode qk_transpile(const QkCircuit *qc, const QkTarget *target, const QkTranspileOptions *options, QkTranspileResult *result, char **error)

Transpile un solo circuito.

El transpilador Qiskit es un compilador de circuitos cuánticos que reescribe un circuito de entrada dado para ajustarlo a las restricciones de una QPU y optimiza el circuito para su ejecución. Esta función sólo debe utilizarse con circuitos construidos utilizando la API C de Qiskit. Hace suposiciones sobre el circuito sólo utilizando características expuestas a través de C, si usted está en un entorno mixto Python y C es típicamente mejor invocar el transpilador a través de Python.

Esta función es multihilo internamente y lanzará un pool de hilos con hilos igual al número de CPUs reportadas por el sistema operativo por defecto. Esto incluirá núcleos lógicos en CPUs con multihilo simultáneo. Puede ajustar el número de hilos con la variable de entorno RAYON_NUM_THREADS . Por ejemplo, configurando RAYON_NUM_THREADS=4 se limitaría el pool de hilos a 4 hilos.

Seguridad

El comportamiento es indefinido si circuit, target, o result, no son punteros válidos y distintos de nulo a a QkCircuit, QkTarget, o QkTranspileResult respectivamente. options Debe ser un puntero válido a a QkTranspileOptions o NULL. error Debe ser un puntero válido a un char puntero o NULL.

Parámetros

  • qc - Un puntero al circuito en el que se ejecutará el transpilador.
  • target - Un puntero al objetivo para el que compilar el circuito.
  • options - Un puntero a un objeto options que define las opciones del usuario. Si es un puntero nulo, se utilizarán los valores por defecto. Consulte qk_transpile_default_options para obtener más información sobre los valores por defecto.
  • result - Un puntero a la posición de memoria del resultado del transpilador. En una ejecución con éxito (código de retorno 0) la salida del transpilador se escribirá en el puntero. Los miembros de la estructura resultante son propiedad de la persona que llama y usted es responsable de liberar los miembros utilizando las respectivas funciones free.
  • error : un puntero a un puntero con una cadena terminada en nulo con una descripción del error. Si el transpilador falla, se escribirá un puntero a la cadena con la descripción del error en este puntero. Ese puntero debe liberarse con qk_str_free. Esto puede ser un puntero nulo, en cuyo caso el error no se registrará.

Devuelve

El código de retorno del transpilador, QkExitCode_Success significa éxito y todos los demás valores indican un error.

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.