def make_ilp(computation, system, startmachine, M=10, runtime=None, commtime=None, **kwargs): machines = system.machines network = system.comm #Jobs = map(name, computation.jobs) Jobs = computation.jobs Agents = machines PP = computation.precedence() P = defaultdict(lambda: 0) for a, b in PP: P[name(a), name(b)] = PP[a, b] B = B_machine_ability(computation, system, startmachine) # runtimes = compute_runtimes(computation, system, **kwargs) # commtimes = compute_commtimes(computation, system, **kwargs) runtime = runtime or make_runtime_fn(computation, system, **kwargs) commtime = commtime or make_commtime_fn(computation, system, **kwargs) D = FunctionDict(runtime) C = FunctionDict(commtime) R = defaultdict(lambda: 0) prob, X, S, Cmax = schedule(Jobs, Agents, D, C, R, B, P, M) prob.solver = pulp.LpSolverDefault prob.solver.maxSeconds = M return prob, X, S, Cmax #, runtimes, commtimes
def make_ilp(computation, system, startmachine, M=10, runtime=None, commtime=None, **kwargs): machines = system.machines network = system.comm #Jobs = map(name, computation.jobs) Jobs = computation.jobs Agents = machines PP = computation.precedence() P = defaultdict(lambda:0) for a,b in PP: P[name(a), name(b)] = PP[a,b] B = B_machine_ability(computation, system, startmachine) # runtimes = compute_runtimes(computation, system, **kwargs) # commtimes = compute_commtimes(computation, system, **kwargs) runtime = runtime or make_runtime_fn(computation, system, **kwargs) commtime = commtime or make_commtime_fn(computation, system, **kwargs) D = FunctionDict(runtime) C = FunctionDict(commtime) R = defaultdict(lambda:0) prob, X, S, Cmax = schedule(Jobs, Agents, D, C, R, B, P, M) prob.solver = pulp.LpSolverDefault prob.solver.maxSeconds = M return prob, X, S, Cmax#, runtimes, commtimes
python test.py # in a third terminal """ from theano_to_milp import go_schedule as tompkins_schedule #from heft import theano_heft_schedule as heft_schedule from heft import schedule as heft_schedule from timings import make_runtime_fn, make_commtime_fn, make_commtime_fn_tompkins #from mul_sum_computation import make_computation from add_sum_computation import make_computation from three_node_system import system, A computation = make_computation(2, (10, 10)) runtime = make_runtime_fn(computation, system) commtime = make_commtime_fn(computation, system) sched_heft = heft_schedule(computation.jobs, system.machines, computation.start_jobs, computation.end_jobs, runtime, commtime, cache=False) commtime_tompkins = make_commtime_fn_tompkins(computation, system) sched_milp = tompkins_schedule(computation, system, A, M=1, runtime=runtime,
ipcontroller --profile=mpi # in one terminal mpiexec --np 3 ipengine --profile=mpi # in another terminal python test.py # in a third terminal """ from theano_to_milp import go_schedule as tompkins_schedule #from heft import theano_heft_schedule as heft_schedule from heft import schedule as heft_schedule from timings import make_runtime_fn, make_commtime_fn, make_commtime_fn_tompkins #from mul_sum_computation import make_computation from add_sum_computation import make_computation from three_node_system import system, A computation = make_computation(2, (10, 10)) runtime = make_runtime_fn(computation, system) commtime = make_commtime_fn(computation, system) sched_heft = heft_schedule(computation.jobs, system.machines, computation.start_jobs, computation.end_jobs, runtime, commtime, cache=False) commtime_tompkins = make_commtime_fn_tompkins(computation, system) sched_milp = tompkins_schedule(computation, system, A, M=1, runtime=runtime, commtime=commtime_tompkins) print "Tompkins\n", sched_milp print "\nHEFT\n", [(x.worker, x.task_list) for x in sched_heft]