Я искал последние пару часов, и я не могу понять, как это сделать - я новичок в мире параллельных вычислений.Параллелизация с joblib - Clarity
Моя задача: Я хочу обновить определенное значение (или три) на массиве частиц. В настоящее время, у меня есть функция, которая делает что-то вроде:
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
Где массив частиц содержит атрибуты каждой частицы (положение, скорость и т.д.) для N частиц в 2D Numpy массива. Field1 и Field2 - поля, действующие на эти частицы, но частицы не влияют друг на друга или поля, поэтому это просто другие массивы, служащие в качестве поисковых таблиц.
Мой вопрос: Как я могу использовать joblib для параллелизации этого цикла? Должен ли я удалить цикл из функции и выполнить итерацию в основной программе (отправка только одного столбца моего массива для конкретной частицы, а не всего массива), или есть способ распараллеливания внутри функции, чтобы я все еще мог вернуть мой обновленный массив частиц? Я знаю, что кажется, что неэффективно копировать весь массив каждый раз, но положение частиц также важно, поэтому мне нужны все данные о частицах (хотя я только изменяю скорости).
Обычно у меня есть игра с ней, но в настоящий момент я изо всех сил пытаюсь понять, как ее применять, чтобы предоставить образец кода. Любая помощь будет принята с благодарностью!
Благодарим за отзыв! Я читал эту страницу и большинство других в Google. Проблема в том, что я не понимаю, как применить процесс параллелизации к этой конкретной проблеме - функцию с циклом в ней, где это цикл, который я хочу распараллелить. Joblib похоже только функции. – Yoshi
'Защита parallel_looping (номер): данные = Параллельный (n_jobs = 2) (задержка (SQRT) (я ** 2) для я в диапазоне (номер)) вернуть data' Смотрите в этом примере цикле в настоящее время распараллелен –
В этом случае меня особенно беспокоит, как обрабатывать вывод. Информация о частицах содержится в матрице. Мне нужно иметь возможность обновлять скорость каждой частицы, используя информацию в этой матрице, а затем * хранить * ее в соответствующем разделе матрицы. В этом случае решение не кажется мне сразу очевидным, и копирование примеров из google (которое я прочитал), к сожалению, не помогает. – Yoshi