我一直在寻找最近几个小时,我无法理解如何做到这一点 - 我是并行计算世界的新手。
我的任务:我希望在粒子数组上更新特定值(或三个)。目前,我有一个功能,如:
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
其中粒子数组包含2D numpy数组中N粒子的每个粒子的属性(位置,速度等)。 Field1和Field2是作用于这些粒子的场,但粒子不会相互影响或相互影响,因此这些只是用作查找表的其他数组。
我的问题:如何使用joblib来并行化这个循环?我是否必须从函数中删除循环并在主程序中迭代(仅为特定粒子发送我的数组的一列,而不是整个数组),或者是否有一种在函数内并行化的方法,所以我仍然可以返回我更新的粒子数组?我知道每次复制整个阵列似乎效率低下,但粒子的位置也很重要 - 所以我需要粒子上的所有数据(虽然我只是改变了速度)。
通常我会玩它,但目前我很难理解如何应用它来提供示例代码。任何帮助将不胜感激!