Parallelize Simulations

This commit is contained in:
Joshua E. Jodesty 2018-11-14 14:58:55 -05:00
parent 7fb728da6a
commit 026e799c74
2 changed files with 27 additions and 11 deletions

11
engine/multiproc.py Normal file
View File

@ -0,0 +1,11 @@
from pathos.multiprocessing import ProcessingPool as Pool
def parallelize_simulations(f, states_list, configs, env_processes, T, N):
def process(config):
return f(states_list, config, env_processes, T, N)
with Pool(len(configs)) as p:
results = p.map(process, configs)
return results

View File

@ -1,24 +1,29 @@
from ui.config import state_dict, mechanisms, exogenous_states, env_processes, sim_config
import pandas as pd
from tabulate import tabulate
from engine.configProcessor import generate_config, create_tensor_field
from engine.mechanismExecutor import simulation
from engine.utils import flatten
from tabulate import tabulate
import pandas as pd
from ui.config import state_dict, mechanisms, exogenous_states, env_processes, sim_config
from engine.multiproc import parallelize_simulations
def main():
states_list = [state_dict]
ep = list(exogenous_states.values())
configs = generate_config(state_dict, mechanisms, ep)
# print(len(configs))
print(tabulate(create_tensor_field(mechanisms, ep), headers='keys', tablefmt='psql'))
print
# p = pipeline(states_list, configs, env_processes, range(10))
config = generate_config(state_dict, mechanisms, ep)
T = sim_config['T']
N = sim_config['N']
configs = [config, config]
# Dimensions: N x r x mechs
s = simulation(states_list, configs, env_processes, T, N)
result = pd.DataFrame(flatten(s))
if len(configs) > 1:
simulations = parallelize_simulations(simulation, states_list, configs, env_processes, T, N)
else:
simulations = [simulation(states_list, configs[0], env_processes, T, N)]
return result
for result in simulations:
print(tabulate(create_tensor_field(mechanisms, ep), headers='keys', tablefmt='psql'))
print
print(tabulate(pd.DataFrame(flatten(result)), headers='keys', tablefmt='psql'))