Учитывая приведенный ниже код, я не могу исправить тот факт, что только ранг 0 участвует в оценках Objective после первой итерации (SCIPY) минимизатора. Очевидно, что ранжирование! = 0 работников завершают свои первоначальные задачи, и минимизатор не переходит на этих работников. Мой вопрос: Как могу их переехать?
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.Max = None
def f(x_):
return
def Objective(self, x):
print(f"Entering Objective on rank {self.rank}")
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.Max = self.comm.bcast(self.Max if self.rank==0 else None, root=0)
else:
while not self.Max:
self.Objective(None)
if __name__=='__main__':
t_eval = np.linspace(0, 100, 100)
Instance = Solver(SampleTimes=t_eval)
print(Instance.Maximize())
Подробнее здесь: https://stackoverflow.com/questions/796 ... -iteration
MPI4PY: только ранг 0, участвуя в Scipy, минимизируется после первой итерации ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
MPI4PY: только ранг 0, участвуя в Scipy, минимизируется после первой итерации
Anonymous » » в форуме Python - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-
-
-
MPI4PY: только ранг 0, участвуя в Scipy, минимизируется после первой итерации
Anonymous » » в форуме Python - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Scipy минимизируется с линейными ограничениями, пытаясь вызвать объективную функцию в NAN
Anonymous » » в форуме Python - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-