def sample_cutoff(test): print "** Sampling for Real Space" samples_dir = Config.get_test_samples_dir(Config.test) Config.create_dir(samples_dir) lmp_config = PPPMUtilities.LammpsPPPMConfig() lmp_config.npart = test.npart lmp_config.timesteps = test.timesteps lmp_config.ewald = real_space_sampling_params["ewald"] # cutoff set in the loop lmp_config.order = real_space_sampling_params["order"] lmp_config.grid = real_space_sampling_params["grid"] lmp_config.mixing = test.mixing lmp_config.diff = test.diff_mode # cutoffs = get_sampled_cutoffs(test.npart, test.domain, test.box) timings = [None for _ in cutoffs] ewald = rsp["ewald"] P = rsp["order"] grid = rsp["grid"] for i, c in enumerate( get_sampled_cutoffs(test.npart, test.domain, test.box)): try: t = extract_timings_from_log( os.path.join(samples_dir, "Output-%s-%s-%.2f-%.2f-%d-%dx%dx%d" % \ (test.diff_mode, test.mixing, ewald, c, P, grid[0], grid[1], grid[2])) )[1] timings[i] = t except Exception, e: pass
def sample_kspace(test): print "** Sampling for KSpace" samples_dir = Config.get_test_samples_dir(Config.test) Config.create_dir(samples_dir) lmp_config = PPPMUtilities.LammpsPPPMConfig() lmp_config.npart = test.npart lmp_config.timesteps = test.timesteps lmp_config.ewald = kspace_sampling_params["ewald"] lmp_config.mixing = test.mixing lmp_config.diff = test.diff_mode # grids = get_sampled_grid_sizes(test.npart, test.domain, test.box) grids_cont = [mult(g) for g in grids] Ps = get_sampled_Ps(test.npart, test.domain, test.box) # cutoffs = get_sampled_cutoffs(test.npart, test.domain, test.box) c_min = cutoffs[0] c_max = cutoffs[-1] ewald = kspace_sampling_params["ewald"] for c in [c_min, c_max]: lmp_config.cutoff = c for P in Ps: lmp_config.order = P timings = [None for _ in grids] for i, g in enumerate(grids): try: t = extract_timings_from_log( os.path.join(samples_dir, "Output-%s-%s-%.2f-%.2f-%d-%dx%dx%d" % \ (test.diff_mode, test.mixing, ewald, c, P, g[0], g[1], g[2])) )[2] if not math.isnan(t): timings[i] = t except Exception, e: print c, P, g, e pass dynamic_sampling(lmp_config, "kspace", grids_cont, grids, timings, kspace_fitting_f)
def run_interface_timings(npart, domain, box, mixing, np, nn, ts, diffmode, accuracy): grids = get_grid_sizes(npart, domain, box) nprocs = np #Config.create_dir( timings_dir ) timings_dir = Config.get_test_timings_dir(Config.test) Config.create_dir(timings_dir) # LSF Job submission lsf_config = JobScript.LSF_Config() lsf_config.group = "aices" lsf_config.jobname = "PPPM-Timings" #lsf_config.time = "%d:00" % (min(120, 2.5*np)) lsf_config.time = "2:00" lsf_config.memory = "1000" lsf_config.nthreads = np lsf_config.parallelism_type = "openmpi" lsf_config.arch_string = "Harpertown" # Command lsf_config.command = [] # Lammps Config lmp_config = PPPMUtilities.LammpsPPPMConfig() lmp_config.npart = npart lmp_config.timesteps = ts lmp_config.mixing = mixing lmp_config.diff = diffmode for (cutoff_idx, P_idx, grid_idx, ewald_error) in get_interface_points(npart, domain, box): lmp_config.ewald = ewald_error[0][0] lmp_config.cutoff = Config.cutoff_values[cutoff_idx] lmp_config.order = Config.order_values[P_idx] lmp_config.grid = grids[grid_idx] print lmp_config.ewald print lmp_config.cutoff, "(", cutoff_idx, ")" print lmp_config.order, "(", P_idx, ")" print lmp_config.grid, "(", grid_idx, ")" lmp_infile = os.path.join( timings_dir, "Lammps-%s-%s-%.2f-%.2f-%d-%dx%dx%d" % (lmp_config.diff, lmp_config.mixing, lmp_config.ewald, lmp_config.cutoff, lmp_config.order, lmp_config.grid[0], lmp_config.grid[1], lmp_config.grid[2])) lmp_config.write_config_file(lmp_infile) # LSF outputfile = os.path.join( timings_dir, "Output-%s-%s-%.2f-%.2f-%d-%dx%dx%d" % (lmp_config.diff, lmp_config.mixing, lmp_config.ewald, lmp_config.cutoff, lmp_config.order, lmp_config.grid[0], lmp_config.grid[1], lmp_config.grid[2])) lsf_config.command.append( textwrap.dedent(""" export OMP_NUM_THREADS=1 mpirun -np %d $HOME/MD-libs/lammps-22Jan14/src/lmp_openmpi -l /dev/null < %s > %s """ % (np, lmp_infile, outputfile))) # Script lsf_config.command = "\n".join(lsf_config.command) jobscript = os.path.join(timings_dir, "Jobscript-Interface") lsf_config.write_jobscript(jobscript) print "Submitting job (Interface timing)... ", subprocess.check_call("bsub < %s" % jobscript, shell=True) print "Done"