# Test mview ################################################################################ c = g.coordinates(l_dp) x = l_dp[c] mv = g.mview(x) assert mv.itemsize == 1 and mv.shape[0] == len(mv) assert sys.getrefcount(x) == 3 del mv assert sys.getrefcount(x) == 2 ################################################################################ # Test pinning ################################################################################ l_v = g.complex(grid_sp) pin = g.pin(l_v, g.accelerator) del l_v del pin ################################################################################ # Test assignments ################################################################################ pos = g.coordinates(l_dp) lhs = g.lattice(l_dp) def assign_copy(): g.copy(lhs, l_dp)
{ "mass": 0.00054, "M5": 1.8, "b": 1.5, "c": 0.5, "Ls": 12, "boundary_phases": [1.0, 1.0, 1.0, -1.0], }, ) l_sloppy = l_exact.converted(g.single) eig = g.load(groups[group]["evec_fmt"] % conf, grids=l_sloppy.F_grid_eo) # pin coarse eigenvectors to GPU memory pin = g.pin(eig[1], g.accelerator) light_innerL_inverter = g.algorithms.inverter.preconditioned( g.qcd.fermion.preconditioner.eo1_ne(parity=g.odd), g.algorithms.inverter.sequence( g.algorithms.inverter.coarse_deflate( eig[1], eig[0], eig[2], block=400, fine_block=4, linear_combination_block=32, ), g.algorithms.inverter.split( g.algorithms.inverter.cg({ "eps": 1e-8,
def __init__(self, config, evec_dir): self.evec_dir = evec_dir self.eig = g.load(evec_dir, grids=config.l_sloppy.F_grid_eo) g.mem_report(details=False) # pin coarse eigenvectors to GPU memory self.pin = g.pin(self.eig[1], g.accelerator) light_innerL_inverter = g.algorithms.inverter.preconditioned( g.qcd.fermion.preconditioner.eo1_ne(parity=g.odd), g.algorithms.inverter.sequence( g.algorithms.inverter.coarse_deflate( self.eig[1], self.eig[0], self.eig[2], block=400, fine_block=4, linear_combination_block=32, ), g.algorithms.inverter.split( g.algorithms.inverter.cg({ "eps": 1e-8, "maxiter": 200 }), mpi_split=g.default.get_ivec("--mpi_split", None, 4), ), ), ) light_innerH_inverter = g.algorithms.inverter.preconditioned( g.qcd.fermion.preconditioner.eo1_ne(parity=g.odd), g.algorithms.inverter.sequence( g.algorithms.inverter.coarse_deflate( self.eig[1], self.eig[0], self.eig[2], block=400, fine_block=4, linear_combination_block=32, ), g.algorithms.inverter.split( g.algorithms.inverter.cg({ "eps": 1e-8, "maxiter": 300 }), mpi_split=g.default.get_ivec("--mpi_split", None, 4), ), ), ) light_low_inverter = g.algorithms.inverter.preconditioned( g.qcd.fermion.preconditioner.eo1_ne(parity=g.odd), g.algorithms.inverter.coarse_deflate( self.eig[1], self.eig[0], self.eig[2], block=400, linear_combination_block=32, fine_block=4, ), ) light_exact_inverter = g.algorithms.inverter.defect_correcting( g.algorithms.inverter.mixed_precision(light_innerH_inverter, g.single, g.double), eps=1e-8, maxiter=10, ) light_sloppy_inverter = g.algorithms.inverter.defect_correcting( g.algorithms.inverter.mixed_precision(light_innerL_inverter, g.single, g.double), eps=1e-8, maxiter=2, ) self.prop_l_low = config.l_sloppy.propagator(light_low_inverter) self.prop_l_sloppy = config.l_exact.propagator( light_sloppy_inverter).grouped(2) self.prop_l_exact = config.l_exact.propagator( light_exact_inverter).grouped(2)