pyopenclature errror: symbole indéfini: clCreateSubDevices

J’ai installé la pyopenclature. Quand j’essaie:

python /home/a/pyopencl/examples/benchmark.py 

alors j’ai une erreur:

  Traceback (most recent call last): File "/home/a/pyopencl/examples/benchmark.py", line 6, in  import pyopencl as cl File "/usr/local/lib/python2.7/dist-packages/pyopencl-2013.3-py2.7-linux- x86_64.egg/pyopencl/__init__.py", line 28, in  import pyopencl._cl as _cl ImportError: /usr/local/lib/python2.7/dist-packages/pyopencl-2013.3-py2.7-linux- x86_64.egg/pyopencl/_cl.so: undefined symbol: clCreateSubDevices 

Comment puis-je le résoudre ?

TIA

  Python 2.7.5+ (default, Sep 19 2013, 13:48:49) [GCC 4.8.1] on linux2 Linux zalman 3.11.0-15-generic #23-Ubuntu SMP Mon Dec 9 18:17:04 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux 
 + ------------------------------------------------- ----- +                       
 |  Version du pilote NVIDIA-SMI 4.304.88: 304.88 |                       
 | ------------------------------- + ----------------- ----- + ---------------------- +
 |  Nom du GPU |  Bus-Id Disp.  |  Volcile Uncorr.  ECC |
 |  Fan Temp Perf Pwr: Utilisation / Cap |  Utilisation de la mémoire |  GPU-Util Compute M. |
 | =============================== + ================= ===== + ====================== |
 |  0 GeForce GTX 770 |  0000: 01: 00.0 N / A |  N / A |
 |  25% 29C N / AN / A / N / A |  7% 149MB / 2047MB |  N / A Défaut |
 + ------------------------------- + ----------------- ----- + ---------------------- +

 + ------------------------------------------------- ---------------------------- +
 |  Processus de calcul: Mémoire GPU |
 |  GPU Nom du processus PID Utilisation |
 | ================================================= ============================ |
 |  0 non pris en charge |
 + ------------------------------------------------- ---------------------------- +
  ls /etc/OpenCL/vendors nvidia.icd locate libOpenCL.so /etc/alternatives/x86_64-linux-gnu_libOpenCL.so /etc/alternatives/x86_64-linux-gnu_libOpenCL.so_lib32 /usr/lib/libOpenCL.so /usr/lib/x86_64-linux-gnu/libOpenCL.so /usr/lib32/libOpenCL.so nvcc --version nvcc: NVIDIA (R) Cuda comstackr driver Copyright (c) 2005-2012 NVIDIA Corporation Built on Fri_Sep_21_17:28:58_PDT_2012 Cuda compilation tools, release 5.0, V0.2.1221 

clCreateSubDevices a été introduit dans OCL 1.2. La dernière fois que j’ai vérifié, NVIDIA ne supportait toujours pas OCL 1.2. Peut-être que ça a changé récemment … mieux vaut vérifier.

Vous pouvez utiliser la class pyopencl.Device pour interroger la version de OCL disponible. Documentation ici

a trouvé cette solution affichée par l’homme de pyopenclature lui-même:

Solution: Ajouter

CL_PRETEND_VERSION = “1.1”

à siteconf.py.

Problème: Si vous alimentez les en-têtes PyOpenCL pour CL 1.2 et que vous comstackz ensuite avec un chargeur ICD qui n’implémente pas les fonctions 1.2 (par exemple, clCreateSubDevice), vous obtenez cette casse. Ce qui précède corrige cela, en forçant PyOpenCL à ignorer 1.2.

Andreas

http://comments.gmane.org/gmane.comp.python.opencl/1328

Mais maintenant, j’ai aussi une autre erreur:

  File "/usr/local/lib/python2.7/dist-packages/pytools-2014.3.5-py2.7.egg/pytools/__init__.py", line 5, in  from six.moves import range, zip, intern, input ImportError: cannot import name intern