python cuda, добавление @autojit перед функциями класса

#python #function #class #anaconda

#python #функция #класс #анаконда

Вопрос:

Я вижу отсюда: пример NumbaPro, что самый простой способ ускорить python при работе в Anaconda — просто выполнить следующее:

 from numba import autojit

@autojit
def myfunction(params):
    #do something
  

Однако у меня немного другой случай, у меня есть функция в классе, и я думаю, что, возможно, именно по этой причине я получаю эту ошибку:

     class GentleBoostC:
  File "C:UsersappDocumentsPython Scriptsgentleboost_c_class.py", line 64, in GentleBoostC
    @autojit
  File "C:UsersappAnacondalibsite-packagesnumbadecorators.py", line 183, in autojit
    nopython=nopython, locals=locals, **kwargs)(func)
  File "C:UsersappAnacondalibsite-packagesnumbadecorators.py", line 164, in _autojit_decorator
    compilerimpl = compiler_cls(env, f, nopython, flags, template_signature)
  File "C:UsersappAnacondalibsite-packagesnumbawrappingcompiler.py", line 78, in __init__
    self.ast = functions._get_ast(py_func)
  File "C:UsersappAnacondalibsite-packagesnumbafunctions.py", line 89, in _get_ast
    ast.PyCF_ONLY_AST | flags, True)
  File "C:UsersappDocumentsPython Scriptsgentleboost_c_class.py", line 1
    def train(self, X, y, H):
    ^
IndentationError: unexpected indent
  

Мой код выглядит следующим образом:

 from sklearn.externals.six.moves import zip
import numpy as np
import statsmodels.api as sm
import math
from skimage import data, io, filter, color, exposure
from numba import autojit

class GentleBoostC:

    # some initializer functions

    @autojit
    def train(self, X, y, H):
            # do something
  

Ошибка говорит, что что-то не так с отступом @autojit строки, но это не так. Есть ли другой способ использовать его, если я работаю с классами? Я попытался добавить строку @autojit перед определением класса, но это тоже не сработало.

Комментарии:

1. Можете ли вы проверить, что вы не смешиваете табуляции и пробелы несовместимым образом? Если вы запустите с python -tt , он будет кричать на вас, если вы их смешаете 🙂

2. Хотя я работаю в Spyder от Anaconda. Не командная строка… как бы я использовал python -tt в Spyder?

3. Поскольку вы указали CUDA в заголовке вопроса, я предполагаю, что вы действительно хотите, чтобы NumbaPro использовал ваш графический процессор. Если это так, то вы хотите использовать from numbapro import cuda и @cuda.autojit .