#python #numba
#python #numba
Вопрос:
В настоящее время я изучаю, как использовать numba с декоратором, и я пытаюсь запустить этот код с помощью Cuda, я использую Conda Python 3.8 и хотел бы ускорить этот код в Cuda или с помощью njit.
Без истекшего времени jit = 46.5080931186676
с истекшим временем jit = 42.55301785469055
Если я попытаюсь запустить его с помощью @njit, получающего эту ошибку
numba.core.errors.TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Untyped global name 'hex': cannot determine Numba type of <class 'builtin_function_or_method'>
File "main.py", line 7:
def gen_hex():
<source elided>
for i in range(1, 10000000):
x = hex(i)[2:].zfill(64)
^
Вот мой код
from numba import jit
import time
@jit
def gen_hex():
for i in range(1, 10000000):
x = hex(i)[2:].zfill(64)
print(x)
if __name__ == "__main__":
start = time.time()
gen_hex()
end = time.time()
print("Elapsed = %s" % (end - start))
Любое предложение
Комментарии:
1. что такое hex? вам нужно определить его в файле или импортировать
2. hex — это чистый python, преобразуйте десятичную дробь в шестнадцатеричную, функция hex() преобразует целое число в соответствующее шестнадцатеричное число в строковой форме и возвращает его.
3. Существуют различные аспекты python, которые могут не поддерживаться на разных диалектах numba.
hex
похоже, это один из них. Вашими вариантами было бы не использовать numba или придумать собственную реализациюhex
, которую могут принять numba или numba cuda.