def get_whole_interface_prediction(npart, domain, box, mixing, np, nn, ts, diff, acc): fitting_vars = pppm_fit_samples(npart, domain, box, mixing, np, nn, ts, diff) grids = get_grid_sizes(npart, domain, box) # c estimator f_real_space_prediction = fitting_vars[0] f_neigh_prediction = fitting_vars[1] f_kspace_prediction = fitting_vars[2] estimated_timings = [] for params in get_interface_points(npart, domain, box): (cutoff_idx, P_idx, grid_idx, ewald_error) = params ## parameters of interest cutoff = Config.cutoff_values[cutoff_idx] grid = grids[grid_idx] n_grid_points = mult(grid) ## estimated time pt = f_real_space_prediction(cutoff) nt = f_neigh_prediction(cutoff) dt = f_kspace_prediction(cutoff, P_idx, n_grid_points) #tt = pt + dt # c*cutoff**3 + p + g*n_grid_points tt = pt + nt + dt # store prediction estimated_timings.append(((tt, pt, dt, nt), params)) return estimated_timings
def get_sampled_grid_sizes(npart, domain, box): grids = get_grid_sizes(npart, domain, box) test = Config.test grids_at_interface = [ grids[p[2]] \ for p in get_interface_points( test.npart, test.domain, test.box ) ] grids_at_interface = sorted(list(set(grids_at_interface))) return grids_at_interface
def get_sampled_cutoffs(npart, domain, box): test = Config.test cutoffs_at_interface = [ Config.cutoff_values[p[0]] \ for p in get_interface_points( test.npart, test.domain, test.box ) ] cutoffs_at_interface = sorted(cutoffs_at_interface) c_min = cutoffs_at_interface[0] c_max = cutoffs_at_interface[-1] #c_min = 2.0 #c_max = 6.1 cutoffs = [] c = c_min while c <= c_max: cutoffs.append(c) c += d_sampled_cutoff return cutoffs
def get_interface_timings(npart, domain, box, mixing, np, nn, ts, diff, accuracy): diff = diff mixing = mixing grids = get_grid_sizes(npart, domain, box) timings = [] for (cutoff_idx, P_idx, grid_idx, ewald_error) in get_interface_points(npart, domain, box): # extract parameters cutoff = Config.cutoff_values[cutoff_idx] P = Config.order_values[P_idx] grid = grids[grid_idx] ewald = ewald_error[0][0] # load data output_dir = Config.get_test_timings_dir(Config.test) fp = os.path.join( output_dir, "Output-%s-%s-%.2f-%.2f-%d-%dx%dx%d" % (diff, mixing, ewald, cutoff, P, grid[0], grid[1], grid[2])) #t = extract_timings_from_log_full( fp ) # tuple (total, real, kspace) t = extract_timings_from_log(fp) # tuple (total, real, kspace) # store timings.append((t, (cutoff_idx, P_idx, grid_idx, ewald_error))) #print timings[-1] return timings
def get_sampled_Ps(npart, domain, box): test = Config.test Ps_at_interface = [ Config.order_values[p[1]] \ for p in get_interface_points( test.npart, test.domain, test.box ) ] Ps_at_interface = sorted(Ps_at_interface) return range(Ps_at_interface[0], Ps_at_interface[-1] + 1)
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"