Pb sur utilisation bibliothèque python numba [Réglé]
OPS56 Membre non connecté
-
- Voir le profil du membre OPS56
- Inscrit le : 18/11/2008
- Groupes :
Je souhaite utiliser les fonctions jit et njit de la bibliothèque python numba. Après avoir installé la bibliothèque avec pip, j'ai eu un problème de compatibilité entre numba et coverage (installé par défaut avec spyder). J'ai installé deux anciennes versions de numba (0.62.0) et coverage (7.6.1) compatibles d'après cette discussion : https://github.com/numba/numba/issues/10239. Le problème de compatibilité semble résolu, la bibliothèque numba s'importe. Mais j'ai maintenant des problèmes d'allocation mémoire quand je veux utiliser les fonctions jit et njit :
Code TEXT :
terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc Fatal Python error: Aborted Main thread: Current thread 0x00007f03e1f79b80 (most recent call first): File "/home/cecile/.local/lib/python3.10/site-packages/llvmlite/binding/ffi.py", line 197 in __call__ File "/home/cecile/.local/lib/python3.10/site-packages/llvmlite/binding/newpassmanagers.py", line 124 in run File "/home/cecile/.local/lib/python3.10/site-packages/numba/core/codegen.py", line 663 in _optimize_functions File "/home/cecile/.local/lib/python3.10/site-packages/numba/core/codegen.py", line 740 in add_llvm_module File "/home/cecile/.local/lib/python3.10/site-packages/numba/core/codegen.py", line 737 in add_ir_module File "/home/cecile/.local/lib/python3.10/site-packages/numba/core/runtime/nrtdynmod.py", line 212 in compile_nrt_functions File "/home/cecile/.local/lib/python3.10/site-packages/numba/core/runtime/nrt.py", line 45 in initialize File "/home/cecile/.local/lib/python3.10/site-packages/numba/core/compiler_lock.py", line 35 in _acquire_compile_lock File "/home/cecile/.local/lib/python3.10/site-packages/numba/core/cpu.py", line 66 in load_additional_registries File "/home/cecile/.local/lib/python3.10/site-packages/numba/core/base.py", line 267 in refresh File "/home/cecile/.local/lib/python3.10/site-packages/numba/core/compiler.py", line 396 in __init__ File "/home/cecile/.local/lib/python3.10/site-packages/numba/core/compiler.py", line 737 in compile_extra File "/home/cecile/.local/lib/python3.10/site-packages/numba/core/dispatcher.py", line 107 in _compile_core File "/home/cecile/.local/lib/python3.10/site-packages/numba/core/dispatcher.py", line 94 in _compile_cached File "/home/cecile/.local/lib/python3.10/site-packages/numba/core/dispatcher.py", line 80 in compile File "/home/cecile/.local/lib/python3.10/site-packages/numba/core/dispatcher.py", line 908 in compile File "/home/cecile/.local/lib/python3.10/site-packages/numba/core/dispatcher.py", line 376 in _compile_for_args File "/home/cecile/Documents/Lab3.py", line 106 in <module> File "/usr/lib/python3.10/site-packages/spyder_kernels/py3compat.py", line 356 in compat_exec File "/usr/lib/python3.10/site-packages/spyder_kernels/customize/spydercustomize.py", line 469 in exec_code File "/usr/lib/python3.10/site-packages/spyder_kernels/customize/spydercustomize.py", line 611 in _exec_file File "/usr/lib/python3.10/site-packages/spyder_kernels/customize/spydercustomize.py", line 524 in runfile File "/tmp/ipykernel_24596/976754682.py", line 1 in <module> Redémarrage du noyau...
Auriez-vous une solution pour faire fonctionner ces fonctions ?

Dell G3-15 Intel Corei7 - 16Go Ram - Nvidia GTX1660 Ti (Tri boot Mageia 9- 64 bits / Linux Mint 20 Cinamon/ Windows 10)
Core i5 760 - 8Go Ram - Nvidia Gforce 450 - (Triple boot Mageia 9-64 bits - Plasma 5 / Mint 20 Cinamon / Open Suse Tumbleweed - Plasma 5)
Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
Merci — voici des diagnostics et solutions à essayer, classés par probabilité et facilité.
## Causes probables
- Incompatibilité entre versions de numba et llvmlite (llvmlite doit correspondre exactement à numba).
- llvmlite/LLVM allouent beaucoup de mémoire lors de l'optimisation si la configuration d'optimisation ou les pass managers ne correspondent pas.
- Conflit avec l'environnement Spyder / coverage / processus IPython (par ex. fork/threads).
- Installation corrompue (fichiers binaires mal compilés ou ABI mismatch).
- Ressources système insuffisantes (rare si machine normale).
## Vérifications rapides (faites dans un terminal, pas dans Spyder)
1. Versions installées:
- python -c "import numba, llvmlite, sys; print(sys.version); print(numba.__version__); print(llvmlite.__version__)"
2. Vérifier conflits pip vs distribution OS:
- pip show numba llvmlite
- python -c "import importlib,inspect,llvmlite; print(llvmlite.__file__)"
3. Tester hors Spyder:
- Créez un petit script test_numba.py:
```
from numba import njit
@njit
def f(x):
return x+1
print(f(1))
```
Exécutez: python test_numba.py
Si ça plante seulement dans Spyder, le problème est l'environnement interactif.
## Solutions à essayer (ordre recommandé)
### 1) Assurer compatibilité numba ⇄ llvmlite
- Numérisez les paires compatibles pour la version numba 0.62.0. Installez explicitement la version llvmlite recommandée (par ex. 0.41.x ou celle indiquée dans la doc/CHANGELOG pour numba 0.62.0).
- Commande (exemple) :
- pip install --force-reinstall "numba==0.62.0" "llvmlite==0.41.0"
Adaptez la version de llvmlite selon la compatibilité listée dans la page de numba.
### 2) Réinstaller proprement dans un environnement virtuel
- Créez un venv propre (recommandé) pour isoler Spyder et coverage:
- python -m venv ~/venvs/numba-test
- source ~/venvs/numba-test/bin/activate
- pip install pip --upgrade
- pip install numba==0.62.0 llvmlite==<version_compatible>
- pip install spyder (si besoin)
Testez le script dans ce venv.
### 3) Tester avec optimisation réduite / suppression des passes LLVM
- Définir variable d'environnement pour limiter optimisation LLVM (temporaire):
- export NUMBA_LLVM_OPT_LEVEL=1
- ou NUMBA_OPT=0 (selon version)
Lancez le script et voyez si l'erreur disparaît.
### 4) Forcer utilisation d'un backend différent / désactiver cache JIT
- Désactivez le cache: export NUMBA_DISABLE_JIT_CACHE=1
- Forcez le compilateur à n'utiliser qu'un thread:
- export NUMBA_NUM_THREADS=1
### 5) Vérifier l'alloc mémoire système / limites
- ulimit -a (vérifiez address space or data seg size)
- Si ulimit restreint, augmentez: ulimit -s unlimited (ou ulimit -v)
### 6) Regarder crash log plus bas niveau
- Lancez Python sous gdb pour backtrace (si vous savez le faire):
- gdb --args python test_numba.py
- run
- bt (après le crash) — ça montre où std::bad_alloc survient dans LLVM.
### 7) Si le problème est spécifique à Spyder/IPython
- Essayez d'exécuter dans un terminal (comme indiqué). Si ça marche en terminal mais plante dans Spyder, utilisez Spyder lancé depuis le même venv, ou exécutez le script en externe.
- Mettre à jour/retirer coverage uniquement pour l'environnement Spyder si nécessaire.
## Si vous voulez que je continue
Collez ici la sortie de:
- python -c "import sys, numba, llvmlite; print(sys.version); print(numba.__version__); print(llvmlite.__version__)"
- Le résultat du test minimal (script) lancé dans un terminal (sortie complète et traceback s'il y en a).
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.
OPS56 Membre non connecté
-
- Voir le profil du membre OPS56
- Inscrit le : 18/11/2008
- Groupes :
Merci beaucoup pour ton coup de main. Ça m'a permis d'identifier que la source du problème était Spyder.
Le problème vient en fait de la version de spyder 5.3.3, de Mageia 9, qui est trop ancienne.
J'ai installé la version 6.1.2 depuis https://www.spyder-ide.org/
Il faut ensuite l'utiliser dans le même environnement virtuel que l'ancienne version de Spyder.
C'est maintenant ok 👍.
@+

Dell G3-15 Intel Corei7 - 16Go Ram - Nvidia GTX1660 Ti (Tri boot Mageia 9- 64 bits / Linux Mint 20 Cinamon/ Windows 10)
Core i5 760 - 8Go Ram - Nvidia Gforce 450 - (Triple boot Mageia 9-64 bits - Plasma 5 / Mint 20 Cinamon / Open Suse Tumbleweed - Plasma 5)
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie