2013-08-24 4 views
1

я установил LLVM 3.2 и все зависимости Numba (за исключением мета):Ошибка при использовании модуля Python Numba

  • LLVM 3.1 или 3.2
  • llvmpy (от llvmpy/llvmpy вилкой)
  • llvmmath
  • NumPy (версия 1.6 или выше)
  • Мета (от Numba/Мета вилки (по желанию))
  • Cython (построить зависимость только)
  • нос (для модульных тестов)
  • argparse (для pycc)

Я установил LLVM 3.2 и llvmpy в соответствии с инструкциями на этой странице https://github.com/llvmpy/llvmpy. Все остальные модули питона были установлены с помощью пип:

sudo pip install --upgrade module_name 

Далее я попытался примеры Numba на этой странице: http://jakevdp.github.io/blog/2012/08/24/numba-vs-cython/. Я сохранил как pairwise_python, так и pairwise_numba в файле с именем performance.py. Затем, когда я бегу

from performance import * 

в IPython я получаю следующее сообщение об ошибке:

--------------------------------------------------------------------------- 
AssertionError       Traceback (most recent call last) 
<ipython-input-4-c7c496c26b18> in <module>() 
----> 1 import performance 

/home/carlos/Workspace/Freestyle/Numba/performance.py in <module>() 
    14    D[i, j] = np.sqrt(d) 
    15 
---> 16 @jit(arg_types=[double[:,:], double[:,:]]) 
    17 def pairwise_numba(X, D): 
    18  M = X.shape[0] 

/usr/local/lib/python2.7/dist-packages/numba/decorators.pyc in _jit_decorator(func) 
    209    argtys = restype.args 
    210   elif argtys is None: 
--> 211    assert func.__code__.co_argcount == 0, func 
    212    return_type = None 
    213    argtys = [] 

AssertionError: <function pairwise_numba at 0x4b61a28> 

И я не могу использовать pairwise_python ни pairwise_numba. Как я могу заставить это работать?

Системной информация

  • Linux Mint 13 KDE, 64 бита
  • По умолчанию версии компиляторов GCC: 4,8
  • Python 2.7.3 (скомпилировано с GCC 4.6.3)
  • LLVM 3.2 (составлено с использованием gcc 4.8)
  • llvmpy 0.11.2
  • llvmmath 0.1.1
  • NumPy 1.7.1
  • Cython 0.19.1
  • нос 1.3.0
  • argparse 1.2.1

ответ

1

Кажется, вы передаете неправильные аргументы @jit, попробуйте использовать:

@autojit 
def yourfunction(...): 
    ... 

Если вы дадите более подробную информацию о своей функции, мы сможем сообщить вам, что не так с вашим заявлением @jit.

+0

Использование '@ autojit' действительно сработало. Однако он должен работать также в том порядке, который я опубликовал выше, поскольку он использовался для эталона в ссылке, приведенной выше. – Aeronaelius

Смежные вопросы