Python 用numba并行生成任意长度的随机向量
我想生成随机向量的形式Python 用numba并行生成任意长度的随机向量,python,numpy,parallel-processing,numba,Python,Numpy,Parallel Processing,Numba,我想生成随机向量的形式 [i如果是随机均匀(0,1)prange是一个numba函数。键入错误只是来自numba的一般错误,表示在编译函数时遇到了问题。真正的问题是您正在尝试调用未声明的函数。您需要像这样使用prange函数: from numba import njit, int64, float64 import numba import numpy as np @njit([int64[:](float64[:], int64)]) def rand_coin(freqs,r):
[i如果是随机均匀(0,1)prange
是一个numba函数。键入错误只是来自numba的一般错误,表示在编译函数时遇到了问题。真正的问题是您正在尝试调用未声明的函数。您需要像这样使用prange
函数:
from numba import njit, int64, float64
import numba
import numpy as np
@njit([int64[:](float64[:], int64)])
def rand_coin(freqs,r):
return np.arange(r)[np.random.uniform(0,1,size=r)<=freqs]
@njit(parallel=True)
def rand_coins(freqs,n):
r = freqs.shape[0]
return [rand_coin(freqs,r) for i in numba.prange(n)] # **
来自numba import njit、int64、float64
进口麻木
将numpy作为np导入
@njit([int64[:](float64[:],int64)])
def兰特币(频率,r):
返回np.arange(r)[np.random.uniform(0,1,size=r),这在我上面的示例中只是输入错误。运行代码会产生一个双重免费或损坏
错误(在上面的玩具示例的运行时)--它对你有用吗?它对be有用,但我怀疑它与列表理解有关。我在谷歌上查找了它,发现了这个github问题:。当你这样使用理解时,prange
似乎是必要的。顺便问一句:兰特硬币。平行诊断(级别=4)确认平行部分吗使用np.random.*()进行“环绕”,其中严格的re-[SERIAL]-由于同时维护状态机种子和伪随机生成序列的可再现性,因此必须进行同步化?@user3666197当我执行上述rand_coins
函数时,我立即得到一个双重无错误或损坏错误,后面跟着一个SIGABRT,因此我无法检查并行诊断——很可能与其中一个他给我写了两份报告
from numba import njit, int64, float64
import numba
import numpy as np
@njit([int64[:](float64[:], int64)])
def rand_coin(freqs,r):
return np.arange(r)[np.random.uniform(0,1,size=r)<=freqs]
@njit(parallel=True)
def rand_coins(freqs,n):
r = freqs.shape[0]
return [rand_coin(freqs,r) for i in numba.prange(n)] # **