Как я могу избежать ошибки numba с рекурсией? - PullRequest
0 голосов
/ 22 апреля 2020

Я настроил функцию, которая перебирает комбинации символов для формирования строк. Он рекурсивен сам по себе, рекурсивный вызов выглядит так:

testG(charNum - 1, arr2)

Но когда я вызываю всю функцию, я получаю эту ошибку:

>>> testSpeedGPU()
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    testSpeedGPU()
  File "F:\Script Projects#\HASHFinder.py", line 90, in testSpeedGPU
    testG(4, [''])
  File "D:\Python\lib\site-packages\numba\cuda\dispatcher.py", line 40, in __call__
    return self.compiled(*args, **kws)
  File "D:\Python\lib\site-packages\numba\cuda\compiler.py", line 758, in __call__
    kernel = self.specialize(*args)
  File "D:\Python\lib\site-packages\numba\cuda\compiler.py", line 769, in specialize
    kernel = self.compile(argtypes)
  File "D:\Python\lib\site-packages\numba\cuda\compiler.py", line 784, in compile
    kernel = compile_kernel(self.py_func, argtypes,
  File "D:\Python\lib\site-packages\numba\core\compiler_lock.py", line 32, in _acquire_compile_lock
    return func(*args, **kwargs)
TypeError: compile_kernel() got an unexpected keyword argument 'boundscheck'

Вот тело функции:

@jit(target ="cuda")
def testG(charNum, inpArray) -> null:
    if charNum == 1:
        arr2 = []
        for s in range(len(inpArray)):
            for i in range(len(alp)):
                arr2.append(alp[i] + inpArray[s])
        return
    else:
         print("more than 1")
         arr2 = []
         for s in range(len(inpArray)):
             for i in range(len(alp)):
                 arr2.append(alp[i] + inpArray[s])
         testG(charNum - 1, arr2)

Я думаю, что это имеет отношение к рекурсии, но я действительно не знаю. Спасибо за вашу помощь!

PS: функция работает, когда не помечена @jit (target = "cuda")

...