qiskit-community / qiskit-optimization

Quantum Optimization
https://qiskit-community.github.io/qiskit-optimization/
Apache License 2.0
226 stars 139 forks source link

GAS error with mpi #402

Closed anavasca closed 2 years ago

anavasca commented 2 years ago

Environment

What is happening?

I execute the following program with error:

import numpy as np from qiskit import QuantumCircuit, transpile, Aer, IBMQ from qiskit.tools.jupyter import from qiskit.visualization import from qiskit.providers.aer import QasmSimulator from qiskit.algorithms import NumPyMinimumEigensolver from qiskit_optimization.algorithms import GroverOptimizer, MinimumEigenOptimizer from qiskit_optimization.problems import QuadraticProgram from qiskit_optimization.translators import from_docplex_mp from qiskit import BasicAer from docplex.mp.model import Model from qiskit_optimization import QuadraticProgram from qiskit_optimization.translators import from_docplex_mp from qiskit_optimization.converters import QuadraticProgramToQubo from qiskit.providers.aer import StatevectorSimulator from qiskit.providers.aer import AerSimulator

backend = AerSimulator(method='statevector',blocking_enable=True, blocking_qubits=2)

model = Model()

Establecemos las variables y su tipo

x0 = model.binary_var(name="x0") x1 = model.binary_var(name="x1") x2 = model.binary_var(name="x2") x3 = model.binary_var(name="x3") x4 = model.binary_var(name="x4")

model.minimize(-(x0 + 5x1 + 3x2 + 2x3 + 2x4 - 3x0x3 - 8x1x2 - 7x1x4 - 5x2x4))

qp = from_docplex_mp(model)

cubo=QuadraticProgramToQubo().convert(qp)

grover_optimizer = GroverOptimizer(10, num_iterations=10, quantum_instance=backend) results = grover_optimizer.solve(cubo) print(results.prettyprint())

How can we reproduce the issue?

when I launch the programme with the command:

!time mpirun -np 1 -host 172.31.41.211:1 python /home/ubuntu/qiskit_pruebas/scripts/Qiskit_GAS_Parallelization.py

I get the correct result:

objective function value: -7.0 variable values: x0=0.0, x1=1.0, x2=0.0, x3=1.0, x4=0.0 status: SUCCESS

however when I launch the command :

!time mpirun -np 2 -host 172.31.41.211:2 python /home/ubuntu/qiskit_pruebas/scripts/Qiskit_GAS_Parallelization.py

I get the error shown below:

Simulation failed and returned the following error message: ERROR: [Experiment 0] cache blocking : there are gates operation can not chache blocked in blocking_qubits = 16 Simulation failed and returned the following error message: ERROR: [Experiment 0] cache blocking : there are gates operation can not chache blocked in blocking_qubits = 16 Traceback (most recent call last): File "/home/ubuntu/qiskit_pruebas/scripts/Qiskit_GAS_Parallelization.py", line 45, in results = grover_optimizer.solve(cubo) File "/home/ubuntu/.local/lib/python3.8/site-packages/qiskit_optimization/algorithms/grover_optimizer.py", line 233, in solve outcome = self._measure(circuit) File "/home/ubuntu/.local/lib/python3.8/site-packages/qiskit_optimization/algorithms/grover_optimizer.py", line 315, in _measure probs = self._get_probs(circuit) File "/home/ubuntu/.local/lib/python3.8/site-packages/qiskit_optimization/algorithms/grover_optimizer.py", line 323, in _get_probs result = self.quantum_instance.execute(qc) File "/home/ubuntu/.local/lib/python3.8/site-packages/qiskit/utils/quantum_instance.py", line 708, in execute result = run_circuits( File "/home/ubuntu/.local/lib/python3.8/site-packages/qiskit/utils/run_circuits.py", line 298, in run_circuits raise QiskitError(f"Circuit execution failed: {msg}") qiskit.exceptions.QiskitError: 'Circuit execution failed: ERROR: [Experiment 0] cache blocking : there are gates operation can not chache blocked in blocking_qubits = 16' Traceback (most recent call last): File "/home/ubuntu/qiskit_pruebas/scripts/Qiskit_GAS_Parallelization.py", line 45, in results = grover_optimizer.solve(cubo) File "/home/ubuntu/.local/lib/python3.8/site-packages/qiskit_optimization/algorithms/grover_optimizer.py", line 233, in solve outcome = self._measure(circuit) File "/home/ubuntu/.local/lib/python3.8/site-packages/qiskit_optimization/algorithms/grover_optimizer.py", line 315, in _measure probs = self._get_probs(circuit) File "/home/ubuntu/.local/lib/python3.8/site-packages/qiskit_optimization/algorithms/grover_optimizer.py", line 323, in _get_probs result = self.quantum_instance.execute(qc) File "/home/ubuntu/.local/lib/python3.8/site-packages/qiskit/utils/quantum_instance.py", line 708, in execute result = run_circuits( File "/home/ubuntu/.local/lib/python3.8/site-packages/qiskit/utils/run_circuits.py", line 298, in run_circuits raise QiskitError(f"Circuit execution failed: {msg}") qiskit.exceptions.QiskitError: 'Circuit execution failed: ERROR: [Experiment 0] cache blocking : there are gates operation can not chache blocked in blocking_qubits = 16'

What should happen?

I should get the same result but faster since I am distributing the programme.

Any suggestions?

No response

t-imamichi commented 2 years ago

The error cache blocking : there are gates operation can not chache blocked in blocking_qubits = 16 is caused by Aer. It is related to Aer in MPI environment. Please ask it at https://github.com/Qiskit/qiskit-aer

anavasca commented 2 years ago

perfect thanks @t-imamichi