2017-03-24 4 views
0

j'ai compilé mon script cuda via la commande suivante dans une bibliothèque partagée:le chargement d'une bibliothèque partagée (cuda) en python via ctypes, ne peut pas charger dynamiquement

nvcc --ptxas-options=-v --compiler-options '-fPIC' -o test_function.so mologram.cu 

Puis, en Python:

import ctypes 
from numpy.ctypeslib import ndpointer 

lib = ctypes.cdll.LoadLibrary('./test_function.so') 

lance le message d'erreur suivant:

OSError         Traceback (most recent call last) 
<ipython-input-12-02ce09d7f391> in <module>() 
     2 from numpy.ctypeslib import ndpointer 
     3 
----> 4 lib = ctypes.cdll.LoadLibrary('./test_function.so') 


/usr/lib/python2.7/ctypes/__init__.pyc in LoadLibrary(self, name) 
    438 
    439  def LoadLibrary(self, name): 
--> 440   return self._dlltype(name) 
    441 
    442 cdll = LibraryLoader(CDLL) 

/usr/lib/python2.7/ctypes/__init__.pyc in __init__(self, name, mode, handle, use_errno, use_last_error) 
    360 
    361   if handle is None: 
--> 362    self._handle = _dlopen(self._name, mode) 
    363   else: 
    364    self._handle = handle 

OSError: ./test_function.so: cannot dynamically load executable 

Je l'ai fait des scripts similaires dans le passé et ne jamais rencontrer cette erreur. Je suis déconcerté de savoir pourquoi ce message d'erreur apparaît.

Toute entrée apprécié

+0

Vous ne pouvez pas charger la bibliothèque partagée car ce n'est pas une bibliothèque partagée ... – talonmies

Répondre

1

J'ai compilé mon script cuda via la commande suivante dans une bibliothèque partagée

nvcc --ptxas-options=-v --compiler-options '-fPIC' -o test_function.so mologram.cu

Mais vous n'avez pas. Cela compile uniquement mologram.cu dans un fichier objet. Si vous consultez le documentation, vous verrez que la compilation de bibliothèque partagée et la liaison nécessite l'option --shared. Donc

nvcc --ptxas-options=-v --compiler-options '-fPIC' --shared -o test_function.so mologram.cu 

est probablement ce que vous voulez faire.

+0

.... Temps pour le café je suppose. Merci – Mathusalem