首页 > 解决方案 > 如何使 jit 与集合模块一起使用?

问题描述

我尝试通过在 GPU 上运行代码来优化我的代码,但遇到了以下错误。
另外,我对此很陌生,所以我不知道如何使用 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

目标是减少函数运行时间。

标签: python-3.xnumba

解决方案


Numba 不支持整个 python 语言,而是能够 jitting 其功能的(增长的)子集。请参见:

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


推荐阅读