Qiskit / qiskit-aer

Aer is a high performance simulator for quantum circuits that includes noise models
https://qiskit.github.io/qiskit-aer/
Apache License 2.0
486 stars 360 forks source link

"ValueError: numpy.ndarray size changed" when using numpy 1.18 #1127

Closed jyu00 closed 3 years ago

jyu00 commented 3 years ago

Informations

What is the current behavior?

Importing Aer raises a ValueError when using numpy 1.18.1:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/jessieyu/.pyenv/versions/sandbox-3.9/lib/python3.9/site-packages/qiskit/__init__.py", line 57, in <module>
    from qiskit.providers.aer import Aer
  File "/Users/jessieyu/.pyenv/versions/sandbox-3.9/lib/python3.9/site-packages/qiskit/providers/aer/__init__.py", line 64, in <module>
    from .aerprovider import AerProvider
  File "/Users/jessieyu/.pyenv/versions/sandbox-3.9/lib/python3.9/site-packages/qiskit/providers/aer/aerprovider.py", line 20, in <module>
    from .backends.qasm_simulator import QasmSimulator
  File "/Users/jessieyu/.pyenv/versions/sandbox-3.9/lib/python3.9/site-packages/qiskit/providers/aer/backends/__init__.py", line 20, in <module>
    from .pulse_simulator import PulseSimulator
  File "/Users/jessieyu/.pyenv/versions/sandbox-3.9/lib/python3.9/site-packages/qiskit/providers/aer/backends/pulse_simulator.py", line 26, in <module>
    from ..pulse.controllers.pulse_controller import pulse_controller
  File "/Users/jessieyu/.pyenv/versions/sandbox-3.9/lib/python3.9/site-packages/qiskit/providers/aer/pulse/__init__.py", line 52, in <module>
    from .system_models.duffing_model_generators import duffing_system_model
  File "/Users/jessieyu/.pyenv/versions/sandbox-3.9/lib/python3.9/site-packages/qiskit/providers/aer/pulse/system_models/duffing_model_generators.py", line 21, in <module>
    from .hamiltonian_model import HamiltonianModel
  File "/Users/jessieyu/.pyenv/versions/sandbox-3.9/lib/python3.9/site-packages/qiskit/providers/aer/pulse/system_models/hamiltonian_model.py", line 22, in <module>
    from .string_model_parser.string_model_parser import HamiltonianParser
  File "/Users/jessieyu/.pyenv/versions/sandbox-3.9/lib/python3.9/site-packages/qiskit/providers/aer/pulse/system_models/string_model_parser/string_model_parser.py", line 23, in <module>
    from .qobj_from_string import gen_oper
  File "/Users/jessieyu/.pyenv/versions/sandbox-3.9/lib/python3.9/site-packages/qiskit/providers/aer/pulse/system_models/string_model_parser/qobj_from_string.py", line 18, in <module>
    from ...qutip_extra_lite import qobj_generators
  File "/Users/jessieyu/.pyenv/versions/sandbox-3.9/lib/python3.9/site-packages/qiskit/providers/aer/pulse/qutip_extra_lite/qobj_generators.py", line 19, in <module>
    from . import operators as ops
  File "/Users/jessieyu/.pyenv/versions/sandbox-3.9/lib/python3.9/site-packages/qiskit/providers/aer/pulse/qutip_extra_lite/operators.py", line 56, in <module>
    from .fastsparse import fast_csr_matrix, fast_identity
  File "/Users/jessieyu/.pyenv/versions/sandbox-3.9/lib/python3.9/site-packages/qiskit/providers/aer/pulse/qutip_extra_lite/fastsparse.py", line 440, in <module>
    from .cy.spmath import (zcsr_transpose, zcsr_adjoint, zcsr_mult)
  File "spmath.pyx", line 1, in init qiskit.providers.aer.pulse.qutip_extra_lite.cy.spmath
ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject

Steps to reproduce the problem

Install qiskit 0.23.5, numpy 1.18.1, import Aer.

What is the expected behavior?

Aer can be imported.

Suggested solutions

This error goes away after upgrading to numpy 1.20. Was the failing file compiled with numpy 1.20 and the requirement needs to be updated?

mtreinish commented 3 years ago

This is a duplicate of #1120 it should be fixed on master for the 0.8 with https://github.com/Qiskit/qiskit-aer/pull/1125 but for the 0.7.x series I'm working on https://github.com/Qiskit/qiskit-aer/pull/1123 to use a minimum supported numpy version for the release binary builds instead of the latest numpy release. #1125 isn't backportable because the 0.7.x series is directly using the numpy api via cython code in the pulse simulator (which is where this error is coming from) which has been removed from master.