2017-03-24 14 views
0

ロードすることはできません。ctypesの経由Pythonで共有ライブラリ(CUDA)をロードし、動的共有ライブラリには、次のコマンドを経由して、私は私のCUDAスクリプトをコンパイルした

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

を次に、Pythonで:

import ctypes 
from numpy.ctypeslib import ndpointer 

lib = ctypes.cdll.LoadLibrary('./test_function.so') 
私は、過去に同様のスクリプトを実行され、このエラーが発生したことがない

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 

は、次のエラーメッセージをスローします。なぜこのエラーメッセージが表示されるのか困惑しています。

任意の入力が

+0

共有ライブラリではないため、共有ライブラリをロードできません。 – talonmies

答えて

1

を高く評価し、私は共有ライブラリ

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

に次のコマンドを使用して、私のCUDAスクリプトをコンパイルしているしかし、あなたはそうではありません。これは、オブジェクトファイルにmologram.cuをコンパイルするだけです。 documentationを参照すると、共有ライブラリのコンパイルとリンケージには--sharedオプションが必要です。したがって

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

はおそらくあなたがしたいことです。

+0

....時間はコーヒーでしょう。ありがとう – Mathusalem

関連する問題