基于numpy-ndarray的joblib并行循环性能研究

2024-09-30 02:35:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python使用numpy进行一些统计计算。到目前为止,我当前的实现还没有并行化。所以我在研究python joblib Parallel来实现一个简单的循环并行化。在

我的非并行代码部分如下所示:

def calcRADMatInt( i, j , RADMat, pdfMu, pdfSigma):
  if i==j:
    RADMat[i, j] = 0.0
  else:
    RADMat[i, j] = calcRAD( pdfMu[i], np.squeeze( pdfSigma[i]), pdfMu[j], np.squeeze( pdfSigma[j]) )
    RADMat[j, i] = RADMat[i,j]

def caldRADMat(....):

....
....
  RADMat = np.zeros( (numLandmark, numLandmark) )

  for i in range( 0, numLandmark):
    for j in range( i, numLandmark)):
      calcRADMatInt( i, j, RADMat, pdfMu, pdfSigma)

....
....

我试着把它平行化:

^{pr2}$

但是,生成的并行代码比非并行版本的运行速度慢得多。在

所以我想我的实际问题是: 我使用joblib Parallel正确吗? 这是并行计算numpy-ndarray元素的正确方法吗?在


Tags: 代码innumpyforparalleldefnprange

热门问题