def initialize_parameters(code, width, h): parameters = {} if code == 'gpaw': from gpaw import GPAW as Calculator from gpaw.mpi import rank parameters['h'] = h parameters['width'] = width parameters['stencils'] = (3, 3) #parameters['eigensolver'] = 'cg' conv_param = parameters['h'] elif code == 'dacapo': from ase.calculators.dacapo import Dacapo as Calculator rank = 0 parameters['kT'] = width parameters['planewavecutoff'] = gridspacing2cutoff(h) parameters['densitycutoff'] = parameters['planewavecutoff'] * 1.2 conv_param = parameters['planewavecutoff'] elif code == 'abinit': from ase.calculators.abinit import Abinit as Calculator rank = 0 parameters['width'] = width parameters['ecut'] = gridspacing2cutoff(h) * 1.4 conv_param = parameters['ecut'] elif code == 'elk': parameters['swidth'] = width parameters['stype'] = 3 parameters['autormt'] = True parameters['tforce'] = True # calulate forces parameters['nempty'] = 20 # default 5 #parameters['fixspin'] = -1 # default 0 #parameters['evalmin'] = -15.0 # default -4.5 #parameters['autokpt'] = True #parameters['nosym'] = True #parameters['radkpt'] = 10.0 # default 40.0 parameters['gmaxvr'] = 16 # default 12 # parameters['rgkmax'] = 7.0 # default 7 # #parameters['gmaxvr'] = 19 # default 12 #parameters['rgkmax'] = 9.5 # default 7 parameters['beta0'] = 0.02 # default 0.05 parameters['betamax'] = 0.05 # default 0.5 parameters['maxscl'] = 500 # default 200 #parameters['mixtype'] = 2 # Pulay # default 1 #parameters['deband'] = 0.005 # default 0.0025 #parameters['rmtapm'] = '0.25 0.90' # default (0.25,0.95) return parameters
def memory_bandwidth(code='gpaw', runs=7): slab = Atoms([ Atom('Al', (0, 0, 0)), Atom('Al', (a, 0, 0)), Atom('Al', (a / 2, d / 2, -d / 2)), Atom('Al', (3 * a / 2, d / 2, -d / 2)), Atom('Al', (0, 0, -d)), Atom('Al', (a, 0, -d)), Atom('Al', (a / 2, d / 2, -3 * d / 2)), Atom('Al', (3 * a / 2, d / 2, -3 * d / 2)), Atom('Al', (0, 0, -2 * d)), Atom('Al', (a, 0, -2 * d)), Atom('H', (a / 2 - b / 2, 0, z)), Atom('H', (a / 2 + b / 2, 0, z)) ], cell=(2 * a, d, 5 * d), pbc=(1, 1, 1)) h = 0.15 nbands = 28 kpts = (2, 6, 1) parameters = {} if code == 'gpaw': from gpaw import Calculator from gpaw.mpi import rank parameters['convergence'] = {'eigenstates': 1e-5} parameters['h'] = h elif code == 'dacapo': from ase.calculators.dacapo import Dacapo as Calculator parameters['planewavecutoff'] = gridspacing2cutoff(h) parameters['densitycutoff'] = parameters['planewavecutoff'] * 1.5 rank = 0 t = 0.0 t_runs = [] for n in range(runs): t0 = time.time() for i in range(1): calc = Calculator(nbands=nbands, kpts=kpts, **parameters) slab.set_calculator(calc) e = slab.get_potential_energy() del calc if exists('out.nc'): remove('out.nc') t1 = time.time() t = t + t1 - t0 t_runs.append(t1 - t0) print 'Run: ', n, ' energy ', e, ' rank: ', str( rank), ' time: ', time.time() - t0 if rank == 0: print 'Rank ' + str(rank) + ': time [sec]: avg ' + str( round(np.average(t_runs), 1)) + ', stddev ' + str( round(np.std(t_runs), 1)) + ', min ' + str( round(min(t_runs), 1)) + ', max ' + str( round(max(t_runs), 1))
def memory_bandwidth(code='gpaw', runs=7): slab = Atoms([Atom('Al', (0, 0, 0)), Atom('Al', (a, 0, 0)), Atom('Al', (a/2, d/2, -d/2)), Atom('Al', (3*a/2, d/2, -d/2)), Atom('Al', (0, 0, -d)), Atom('Al', (a, 0, -d)), Atom('Al', (a/2, d/2, -3*d/2)), Atom('Al', (3*a/2, d/2, -3*d/2)), Atom('Al', (0, 0, -2*d)), Atom('Al', (a, 0, -2*d)), Atom('H', (a/2-b/2, 0, z)), Atom('H', (a/2+b/2, 0, z))], cell=(2*a, d, 5*d), pbc=(1, 1, 1)) h = 0.15 nbands = 28 kpts = (2, 6, 1) parameters = {} if code == 'gpaw': from gpaw import Calculator from gpaw.mpi import rank parameters['convergence'] = {'eigenstates': 1e-5} parameters['h'] = h elif code == 'dacapo': from ase.calculators.dacapo import Dacapo as Calculator parameters['planewavecutoff'] = gridspacing2cutoff(h) parameters['densitycutoff'] = parameters['planewavecutoff']*1.5 rank = 0 t = 0.0 t_runs = [] for n in range(runs): t0 = time.time() for i in range(1): calc = Calculator( nbands=nbands, kpts=kpts, **parameters) slab.set_calculator(calc) e = slab.get_potential_energy() del calc if exists('out.nc'): remove('out.nc') t1 = time.time() t = t + t1 - t0 t_runs.append(t1 - t0) print 'Run: ', n, ' energy ', e, ' rank: ', str(rank), ' time: ', time.time() - t0 if rank == 0: print 'Rank '+str(rank)+': time [sec]: avg '+str(round(np.average(t_runs),1))+', stddev '+str(round(np.std(t_runs),1))+', min '+str(round(min(t_runs),1))+', max '+str(round(max(t_runs),1))
def memory_bandwidth(code="gpaw", runs=7): slab = Atoms( [ Atom("Al", (0, 0, 0)), Atom("Al", (a, 0, 0)), Atom("Al", (a / 2, d / 2, -d / 2)), Atom("Al", (3 * a / 2, d / 2, -d / 2)), Atom("Al", (0, 0, -d)), Atom("Al", (a, 0, -d)), Atom("Al", (a / 2, d / 2, -3 * d / 2)), Atom("Al", (3 * a / 2, d / 2, -3 * d / 2)), Atom("Al", (0, 0, -2 * d)), Atom("Al", (a, 0, -2 * d)), Atom("H", (a / 2 - b / 2, 0, z)), Atom("H", (a / 2 + b / 2, 0, z)), ], cell=(2 * a, d, 5 * d), pbc=(1, 1, 1), ) h = 0.15 nbands = 28 kpts = (2, 6, 1) parameters = {} if code == "gpaw": from gpaw import Calculator from gpaw.mpi import rank parameters["convergence"] = {"eigenstates": 1e-5} parameters["h"] = h elif code == "dacapo": from ase.calculators.dacapo import Dacapo as Calculator parameters["planewavecutoff"] = gridspacing2cutoff(h) parameters["densitycutoff"] = parameters["planewavecutoff"] * 1.5 rank = 0 t = 0.0 t_runs = [] for n in range(runs): t0 = time.time() for i in range(1): calc = Calculator(nbands=nbands, kpts=kpts, **parameters) slab.set_calculator(calc) e = slab.get_potential_energy() del calc if exists("out.nc"): remove("out.nc") t1 = time.time() t = t + t1 - t0 t_runs.append(t1 - t0) print("Run: ", n, " energy ", e, " rank: ", str(rank), " time: ", time.time() - t0) if rank == 0: print( "Rank " + str(rank) + ": time [sec]: avg " + str(round(np.average(t_runs), 1)) + ", stddev " + str(round(np.std(t_runs), 1)) + ", min " + str(round(min(t_runs), 1)) + ", max " + str(round(max(t_runs), 1)) )