Coder Social home page Coder Social logo

generate_preset_pass_manager compatibility issue in 'scheduling_method' options with runtime FakebakcendV2 and Aersimulator about qiskit HOT 1 OPEN

0sophy1 avatar 0sophy1 commented on June 11, 2024
generate_preset_pass_manager compatibility issue in 'scheduling_method' options with runtime FakebakcendV2 and Aersimulator

from qiskit.

Comments (1)

ashsaki avatar ashsaki commented on June 11, 2024

Same issue with real backends.

Minimal example:

from qiskit.circuit import QuantumCircuit
from qiskit import transpile
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.backend("ibm_torino")

circuit = QuantumCircuit(2)
circuit.h(0)
circuit.x(1)
circuit.cx(0,1)

pm_sched = generate_preset_pass_manager(
    backend=backend,
    optimization_level=3,
    scheduling_method="alap"
)
isa_circuit_sched_pm = pm_sched.run(circuit)

Note that, this error does not occur if we use:

  • target instead of backend in the present pass manager.
  • transpile function instead of generate_preset_pass_manager

Software versions:

  • Qiskit: $1.0.2$ and $1.1.0rc1$
  • Qiskit IBM Runtime: $0.23.0$
  • Python: $3.11$
  • OS: Mac OS Sonoma

Error trace

14 pm_sched = generate_preset_pass_manager(
     15     backend=backend,
     16     optimization_level=3,
     17     scheduling_method="alap"
     18 )
     19 isa_circuit_sched_pm = pm_sched.run(circuit)

File [python3.11/site-packages/qiskit/transpiler/preset_passmanagers/__init__.py:259](python3.11/site-packages/qiskit/transpiler/preset_passmanagers/__init__.py#line=258), in generate_preset_pass_manager(optimization_level, backend, target, basis_gates, inst_map, coupling_map, instruction_durations, backend_properties, timing_constraints, initial_layout, layout_method, routing_method, translation_method, scheduling_method, approximation_degree, seed_transpiler, unitary_synthesis_method, unitary_synthesis_plugin_config, hls_config, init_method, optimization_method, _skip_target)
    257     pm = level_2_pass_manager(pm_config)
    258 elif optimization_level == 3:
--> 259     pm = level_3_pass_manager(pm_config)
    260 else:
    261     raise ValueError(f"Invalid optimization level {optimization_level}")

File [python3.11/site-packages/qiskit/transpiler/preset_passmanagers/level3.py:106](python3.11/site-packages/qiskit/transpiler/preset_passmanagers/level3.py#line=105), in level_3_pass_manager(pass_manager_config)
    103 else:
    104     pre_optimization = common.generate_pre_op_passmanager(remove_reset_in_zero=False)
--> 106 sched = plugin_manager.get_passmanager_stage(
    107     "scheduling", scheduling_method, pass_manager_config, optimization_level=3
    108 )
    110 return StagedPassManager(
    111     pre_init=pre_init,
    112     init=init,
   (...)
    118     scheduling=sched,
    119 )

File [python3.11/site-packages/qiskit/transpiler/preset_passmanagers/plugin.py:255](python3.11/site-packages/qiskit/transpiler/preset_passmanagers/plugin.py#line=254), in PassManagerStagePluginManager.get_passmanager_stage(self, stage_name, plugin_name, pm_config, optimization_level)
    251     return self._build_pm(
    252         self.optimization_plugins, stage_name, plugin_name, pm_config, optimization_level
    253     )
    254 elif stage_name == "scheduling":
--> 255     return self._build_pm(
    256         self.scheduling_plugins, stage_name, plugin_name, pm_config, optimization_level
    257     )
    258 else:
    259     raise TranspilerError(f"Invalid stage name: {stage_name}")

File [python3.11/site-packages/qiskit/transpiler/preset_passmanagers/plugin.py:272](python3.11/site-packages/qiskit/transpiler/preset_passmanagers/plugin.py#line=271), in PassManagerStagePluginManager._build_pm(self, stage_obj, stage_name, plugin_name, pm_config, optimization_level)
    270     raise TranspilerError(f"Invalid plugin name {plugin_name} for stage {stage_name}")
    271 plugin_obj = stage_obj[plugin_name]
--> 272 return plugin_obj.obj.pass_manager(pm_config, optimization_level)

File [python3.11/site-packages/qiskit/transpiler/preset_passmanagers/builtin_plugins.py:623](python3.11/site-packages/qiskit/transpiler/preset_passmanagers/builtin_plugins.py#line=622), in AlapSchedulingPassManager.pass_manager(self, pass_manager_config, optimization_level)
    620 inst_map = pass_manager_config.inst_map
    621 target = pass_manager_config.target
--> 623 return common.generate_scheduling(
    624     instruction_durations, scheduling_method, timing_constraints, inst_map, target
    625 )

File [python3.11/site-packages/qiskit/transpiler/preset_passmanagers/common.py:573](python3.11/site-packages/qiskit/transpiler/preset_passmanagers/common.py#line=572), in generate_scheduling(instruction_durations, scheduling_method, timing_constraints, inst_map, target)
    566     scheduling.append(ContainsInstruction("delay"))
    567     scheduling.append(
    568         ConditionalController(
    569             TimeUnitConversion(instruction_durations, target=target), condition=_contains_delay
    570         )
    571     )
    572 if (
--> 573     timing_constraints.granularity != 1
    574     or timing_constraints.min_length != 1
    575     or timing_constraints.acquire_alignment != 1
    576     or timing_constraints.pulse_alignment != 1
    577 ):
    578     # Run alignment analysis regardless of scheduling.
    580     def _require_alignment(property_set):
    581         return property_set["reschedule_required"]

AttributeError: 'NoneType' object has no attribute 'granularity'

from qiskit.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.