我在过去的几个小时里一直在寻找,但我不太明白如何做到这一点-我对并行计算的世界还不熟悉。
目前,我有一个函数,它执行以下操作:
def velocity_update(particle_array, Field1, Field2)
for n in range(N)
particle_array[0,n] = # vx equation
particle_array[1,n] = # vy equation
particle_array[2,n] = # vz equation
return particle_array其中粒子数组包含每个粒子的属性(位置、速度等)对于二维numpy数组中的N个粒子。Field1和Field2是作用于这些粒子的场,但是这些粒子彼此不影响,也不影响这些场,因此这些只是用作查找表的其他数组。
我的问题是:如何使用joblib来并行化这个循环?我是否必须从函数中删除循环并在主程序中迭代(只为特定粒子发送数组的一列,而不是整个数组),或者是否有一种方法可以在函数中并行化,以便仍然可以返回更新后的粒子数组?我知道每次复制整个数组似乎效率不高,但粒子的位置也很重要-所以我需要粒子上的所有数据(尽管我只是改变速度)。
任何帮助都将不胜感激!
发布于 2016-05-09 15:15:06
我在谷歌上搜索了如何使用joblib实现并行计算,并在joblib并行类上找到了这个link。我希望这能解决你的问题。
万事如意!
https://stackoverflow.com/questions/37099007
复制相似问题