MPI4Py Deadlock с scipy.minimizePython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 MPI4Py Deadlock с scipy.minimize

Сообщение Anonymous »

Я пытаюсь сделать нечто подобное, как описано при параллелизировании функционального вызова с MPI4PY < /p>
Но есть некоторые вещи, которые заставляют меня скептически относиться к предоставлению предоставленного ответа. Кроме того, у меня есть реализация класса, которая делает ситуацию немного отличаться. Вот какой -то «уменьшенный» код, чтобы продемонстрировать основную логику: < /p>

Код: Выделить всё

from scipy.optimize import minimize
from mpi4py import MPI
import numpy as np

class Solver():
def __init__(self, SampleTimes, InitialArray):
self.comm = MPI.COMM_WORLD
self.rank = self.comm.Get_rank()
self.size = self.comm.Get_size()

self.SampleTimes  = SampleTimes
self.InitialArray = InitialArray

self.Finished = False

def f(x_):
return 

def Objective(self, x):

self.x = self.comm.bcast(x if self.rank == 0 else None, root=0)

tstep_select = np.array_split(self.SampleTimes, self.size)[self.rank]

local_results = []
for t in tstep_select:
result = self.f(self.x) # Some function of x
local_results.append( (t, result) )

all_results = self.comm.gather(local_results, root=0)

if self.rank==0:
all_results = [item for sublist in all_results for item in sublist]
all_results = np.array(all_results)
all_results = all_results[all_results[:,0].argsort()]

scalar = np.trapz(all_results[:,1], all_results[:,0])

return -scalar

def Maximize(self,):

if self.rank == 0:
self.Max = minimize(self.Objective, self.InitialArray)
self.Finished = self.comm.bcast(True, root=0)
return self.Max

else:
while not self.Finished:
self.Objective(None)

if __name__=='__main__':
t_eval = np.linspace(0, 100, 100)
Instance = Solver(SampleTimes=t_eval)
print(Instance.Maximize())
Поэтому я понимаю, что мне нужно вызвать минимизацию только на ранге 0. Кроме того, мне нужно задействовать ранги! = 0 работников, чтобы оценить объектив . Это намерение if/else в методе Maximize .
Как я понимаю, я не могу передать ни один на объектив для ранга! Как написано, Objective будет возвращать None на всех ранга!>

Подробнее здесь: https://stackoverflow.com/questions/796 ... y-minimize
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • MPI4Py Deadlock с scipy.minimize
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • MPI4Py Deadlock с scipy.minimize
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Почему существует scipy.optimize.least_squares, когда scipy.optimize.minimize потенциально может использоваться для тех
    Anonymous » » в форуме Python
    0 Ответы
    131 Просмотры
    Последнее сообщение Anonymous
  • Почему существует scipy.optimize.least_squares, когда scipy.optimize.minimize потенциально может использоваться для тех
    Anonymous » » в форуме Python
    0 Ответы
    106 Просмотры
    Последнее сообщение Anonymous
  • Как использовать mpi4py со scipy
    Гость » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Гость

Вернуться в «Python»