diff --git a/submit_mpi.py b/submit_mpi.py index 83c97175e..3a65ec440 100755 --- a/submit_mpi.py +++ b/submit_mpi.py @@ -24,7 +24,7 @@ def mpi_submit(nslave, args): args arguments to launch each job this usually includes the parameters of master_uri and parameters passed into submit """ - cmd = ' '.join(['mpirun -n %d -machinefile %s' % (nslave, args[0])] + args[1:]) + cmd = ' '.join(['mpirun -n %d --hostfile %s' % (nslave, args[0])] + args[1:]) print cmd subprocess.check_call(cmd, shell = True) diff --git a/test/speed_runner.py b/test/speed_runner.py new file mode 100644 index 000000000..7331c9075 --- /dev/null +++ b/test/speed_runner.py @@ -0,0 +1,34 @@ +import os +import argparse +import sys + +def main(): + parser = argparse.ArgumentParser(description='TODO') + parser.add_argument('-ho', '--host_dir', required=True) + parser.add_argument('-s', '--submit_script', required=True) + parser.add_argument('-rex', '--rabit_exec', required=True) + parser.add_argument('-mpi', '--mpi_exec', required=True) + args = parser.parse_args() + + ndata = [10**4, 10**5, 10**6, 10**7] + nrepeat = [10**4, 10**3, 10**2, 10] + + machines = [2,4,8,16,31] + + executables = [args.rabit_exec, args.mpi_exec] + + for executable in executables: + sys.stderr.write('Executable %s' % executable) + sys.stderr.flush() + for i, data in enumerate(ndata): + for machine in machines: + host_file = os.path.join(args.host_dir, 'hosts%d' % machine) + cmd = 'python %s %d %s %s %d %d' % (args.submit_script, machine, host_file, executable, data, nrepeat[i]) + sys.stderr.write('data=%d, repeat=%d, machine=%d\n' % (data, nrepeat[i], machine)) + sys.stderr.flush() + os.system(cmd) + sys.stderr.write('\n') + sys.stderr.flush() + +if __name__ == "__main__": + main() \ No newline at end of file