Как заставить jit работать с модулем коллекций? - PullRequest
0 голосов
/ 04 ноября 2019

Я попытался оптимизировать свой код, запустив его на графическом процессоре, но столкнулся со следующей ошибкой.
Кроме того, я довольно новичок в этом, поэтому я мало представляю, как работать с декораторами numba, и моя цель для этого - ускорить мою программу.

ValueError: cannot determine Numba type of <class 'collections.defaultdict'>

@jit(target = "cuda")
def initialize(foreign_no_of_words,foreign_l,english_l,num_dict_dutch,num_dict_eng):
    probabilities = {} # Initializing proablities
    #count = {} # Count
    counter = 1
    index = -1*(foreign_no_of_words)

    num_dict_dutch = make_dict_dutch(foreign_l,num_dict_dutch)

    for i in english_l.keys():
        for j in foreign_l.keys():
            s = i+"_"+j
            probabilities[s] = 1/foreign_no_of_words

            #count[s] = 0

        index = write_to_file(probabilities,i,counter,PROB_FILE,foreign_no_of_words,index,num_dict_eng)
        #write_to_file(count,i,counter,COUNT_FILE)
        counter +=1
        probabilities ={}

    return True

Цель состоит в том, чтобыуменьшить время работы функции.

1 Ответ

1 голос
/ 05 ноября 2019

Numba не поддерживает весь язык Python, но вместо этого способен сочетать (растущее) подмножество его возможностей. Пожалуйста, смотрите:

https://numba.pydata.org/numba-doc/dev/reference/pysupported.html https://numba.pydata.org/numba-doc/dev/reference/numpysupported.html

В настоящее время numba поддерживает только namedtuples из модуля collections. Также обратите внимание, что написание кода для GPU еще более ограничено:

http://numba.pydata.org/numba-doc/latest/cuda/index.html#cuda-index

...