我嘗試遵循以下已記錄的示例進行并行化,如下所示:@numba.jit(nopython=True)def foo(uIdx, grids): return [email protected](nopython=True, parallel=True)def bar(grid, grids): LIdxGrid = np.zeros(len(grid)) for uIdx in numba.prange(len(grid)): LIdxGrid[uIdx] = foo(uIdx, grids) return LIdxGridif __name__ == '__main__': import numpy as np grid = np.arange(12) grids = (grid, grid) bar(grid, grids)但這似乎行不通。這個問題似乎源于傳遞grids(甚至沒有在最終foo函數中使用它)。如果我在foo和中刪除該引用bar,它將起作用:bar(grid, 0)Out[47]: array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11.])如何解決/解決此問題?
1 回答

縹緲止盈
TA貢獻2041條經驗 獲得超4個贊
對引用計數項(如np.ndarrays)的支持是非常新的(自numba 0.39起),我不確定是否使用tupleref的s。計數項目已經有效。Afaik的參考書tuple。尚不支持計數的項目。因此,為確保您的代碼正常運行,您必須將替換tuple為list:
if __name__ == '__main__':
import numpy as np
grid = np.arange(12)
grids = [grid, grid]
bar(grid, grids)
并確保您已安裝numba版本0.39!否則,它將無法正常工作。
當然,列表不是元組,因此這只是一種解決方法。但是,只要引用元組,就沒有其他方法可以解決此問題。不完全支持計數的項目。
添加回答
舉報
0/150
提交
取消