from packaging import version from agd import AutomaticDifferentiation as ad np.set_printoptions(edgeitems=30, linewidth=100000, formatter=dict(float=lambda x: "%5.3g" % x)) n=201 hfmIn = HFMUtils.dictIn({ 'model':'Isotropic2', 'seeds':[[0.,0.]], 'exportValues':1, 'cost':cp.array(1.,dtype=np.float32), 'exportGeodesicFlow':1, 'tips':[[1,1]], 'traits':{ # 'niter_i':16,'shape_i':(8,8), # 'debug_print':1, }, 'geodesic_traits':{ # 'debug_print':1, }, # 'geodesic_typical_len':25, # 'geodesic_max_len':40, }) hfmIn.SetRect([[-1,1],[-1,1]],dimx=n+1,sampleBoundary=True) gpuOut = hfmIn.RunGPU() #print("flow",gpuOut['flow']) print("geodesics : ",gpuOut['geodesics']) print("stopping criteria : ",gpuOut['geodesic_stopping_criteria'])
import time from agd.AutomaticDifferentiation.Optimization import norm_infinity from packaging import version from agd import AutomaticDifferentiation as ad np.set_printoptions(edgeitems=30, linewidth=100000, formatter=dict(float=lambda x: "%5.3g" % x)) n = 200 hfmIn = HFMUtils.dictIn({ 'model': 'Isotropic2', 'seeds': [[0., 0.]], 'verbosity': 0, 'exportGeodesicFlow': 1, 'geodesic_hlen': 20, 'array_float_caster': cp.asarray, 'geodesic_traits': { 'debug_print': 1, }, }) hfmIn.SetRect([[-1, 1], [-1, 1]], dimx=n + 1, sampleBoundary=True) X = hfmIn.Grid() hfmIn.update({ 'cost': np.prod(np.sin(2 * np.pi * X), axis=0) + 1.1, # Non-constant cost 'tips': hfmIn.Grid(dims=(5, 4)).reshape(2, -1).T }) hfmIn['tips'] = hfmIn['tips'][:1, :] gpuOut = hfmIn.RunGPU()
hfmIn = HFMUtils.dictIn({ 'model': 'Isotropic2', 'exportValues': 1, # 'order':2, # 'verbosity':1, 'seeds': [[0, 0]], # 'kernel':"dummy", # 'solver':'AGSI', # 'solver':'global_iteration', 'raiseOnNonConvergence': False, 'nitermax_o': 8, # 'tol':1e-8, # 'multiprecision':True, # 'values_float64':True, # 'help':['nitermax_o','traits'], 'dims': np.array((n, n)), 'origin': [-0.5, -0.5], 'gridScale': 1., # 'order':2, # 'order2_threshold':0.3, # 'factoringRadius':10000, # 'seedRadius':2, # 'returns':'in_raw', # 'bound_active_blocks':True, 'traits': { 'niter_i': 8, 'shape_i': (4, 4), # 'niter_i':1,'shape_i':(8,8), # 'niter_i':16,'shape_i':(8,8), # 'niter_i':32,'shape_i':(16,16), # 'niter_i':48,'shape_i':(24,24), # 'niter_i':64,'shape_i':(32,32), # 'debug_print':1, # 'niter_i':1, # 'strict_iter_i_macro':1, # 'pruning_macro':1, # 'strict_iter_o_macro':1, }, 'forwardAD_traits': { 'debug_print': 1 }, })
HFMUtils.dictIn.RunSmart = cugen.cupy_get_args(HFMUtils.RunSmart, dtype64=True, iterables=(dict, Metrics.Base)) xp = cp n = 7 hfmIn_Constant = HFMUtils.dictIn({ 'model': 'TTI2', 'arrayOrdering': 'RowMajor', 'exportValues': 1, 'seeds': xp.array([[0., 0.]]), # 'factoringMethod':'Static', 'nitermax_o': 1, 'factoringRadius': 10, 'nitermax_o': 1, # 'seedRadius':2, 'order': 2, 'traits': { 'debug_print': 1, 'nmix': 2, }, 'raiseOnNonConvergence': False # 'tips':[[x,y] for y in HFMUtils.CenteredLinspace(-1,1,6) # for x in HFMUtils.CenteredLinspace(-1,1,6)], # 'exportGeodesicFlow':1, }) hfmIn_Constant.SetRect(sides=[[0, 1], [0, 1]], dimx=n + 1, sampleBoundary=True) # Define the domain X = hfmIn_Constant.Grid() # Horizontal and vertical axis quad = xp.array([[0.5, 0.1], [0.1, -0.2]])
hfmIn = HFMUtils.dictIn({ 'model': 'Riemann2', # 'verbosity':1, 'arrayOrdering': 'RowMajor', 'seeds': [[0, 0]], # 'solver':'AGSI', # 'solver':'global_iteration', 'raiseOnNonConvergence': False, 'nitermax_o': 200, 'tol': 5 * 1e-7, 'multiprecision': True, # 'values_float64':True, 'exportValues': True, # 'help':['nitermax_o','traits'], 'dims': np.array((n, n)), 'origin': [-0.5, -0.5], 'gridScale': 1., # 'order':2, # 'order2_threshold':0.3, # 'factoringRadius':10000, # 'seedRadius':2, # 'returns':'in_raw', 'traits': { 'niter_i': 8, 'shape_i': (4, 4), # 'niter_i':1,'shape_i':(8,8), # 'niter_i':16,'shape_i':(8,8), # 'niter_i':32,'shape_i':(16,16), # 'niter_i':48,'shape_i':(24,24), # 'niter_i':64,'shape_i':(32,32), # 'debug_print':1, # 'niter_i':1, 'strict_iter_i_macro': 1, 'pruning_macro': 0, 'strict_iter_o_macro': 1, }, # 'nonzero_untidy_kwargs':{'log2_size_i':8,'size2_i':256}, })
cp = ad.functional.decorate_module_functions( cp, cugen.set_output_dtype32 ) # Use float32 and int32 types in place of float64 and int64 plt = ad.functional.decorate_module_functions(plt, cugen.cupy_get_args) HFMUtils.dictIn.RunSmart = cugen.cupy_get_args(HFMUtils.RunSmart, dtype64=True, iterables=(dict, Metrics.Base)) n = 7 hfmIn = HFMUtils.dictIn({ 'model': 'Isotropic2', 'seeds': [[0., 0.]], 'exportValues': 1, 'cost': cp.array(1.), 'exportGeodesicFlow': 1, 'traits': { 'debug_print': 1, 'shape_i': (8, 8), 'niter_i': 16, }, }) hfmIn.SetRect([[0, 1], [0, 1]], dimx=n + 1, sampleBoundary=True) X = hfmIn.Grid() hfmIn['tips'] = hfmIn.Grid(dims=(4, 4)).reshape(2, -1).T walls = X[0] >= 0.5 hfmIn['walls'] = walls hfmOut = hfmIn.RunGPU() print(hfmOut['values']) print(walls)
import cupy as cp import numpy as np import time from agd.AutomaticDifferentiation.Optimization import norm_infinity from agd import AutomaticDifferentiation as ad np.set_printoptions(edgeitems=30, linewidth=100000, formatter=dict(float=lambda x: "%5.3g" % x)) #n=20; nTheta=60 n = 100 nTheta = 96 hfmIn = HFMUtils.dictIn({ 'model': 'Elastica2', 'seeds': cp.array([[0., 0., np.pi]], dtype=np.float32), 'exportValues': 1, 'cost': 1, 'xi': 0.4, # 'nitermax_o':1, 'traits': { 'OffsetT': np.int32, 'merge_sort_macro': 1 } }) hfmIn.SetRect([[-1, 1], [-1, 1]], dimx=n + 1, sampleBoundary=True) hfmIn['dims'] = np.append(hfmIn['dims'], nTheta) hfmOut = hfmIn.RunGPU() #print(hfmOut['scheme_offsets'][0])