-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontractinfo.py
executable file
·138 lines (90 loc) · 4.79 KB
/
contractinfo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import quf
import cotengra as ctg
from quimb import *
def cont_tn_2d():
data_type='float64'
dist_type="normal" #{'normal', 'uniform', 'exp'}
method="mgs" #svd, qr, mgs, exp
jit_fn=True
chi=[2]
device='cpu'
phys_dim=2
list_width_max=[]
list_flops_max=[]
list_peak_max=[]
list_width_av=[]
list_flops_av=[]
list_peak_av=[]
####################################
opt = ctg.ReusableHyperOptimizer(
progbar=False,
minimize='combo-64', #{'size', 'flops', 'combo'}, what to target
#reconf_opts={},
max_repeats=2**8,
max_time=3600,
# max_time='rate:1e6',
parallel=True,
#optlib='baytune', # 'nevergrad', 'baytune', 'chocolate','random'
directory="cash/"
)
#opt="auto-hq"
#tn_U.unitize_(method=method, allow_no_left_inds=True)
#tn_U=load_from_disk("Store/tn_U")
for i in chi:
#tn_U,list_sites, list_inter,list_tags_I, list_tags_U,list_scale=quf.Tn_mera_build(chi=i,data_type=data_type,dist_type=dist_type)
#tn_U,list_sites, list_inter,list_tags_I, list_tags_U,list_scale=quf.Tn_mera_build_3d(phys_dim=phys_dim,chi=i,data_type=data_type,dist_type=dist_type)
tn_U,list_sites, list_inter,list_tags_I, list_tags_U,list_scale=quf.MiniatureTN_build_three(phys_dim=phys_dim,chi=3,chi_p=5,chi_pp=5,depth_U=2,cycle_u="False",data_type=data_type,dist_type=dist_type)
tn_U=load_from_disk("Store/tn_UX5XP9XP9")
quf.Plot_TN_3d_Miniature(tn_U,list_scale,list_tags_I, list_tags_U,phys_dim)
#save_to_disk(method,"Store/method")
############################################################
#width_max, flops_max, peak_max=quf.Info_contract(tn_U,list_sites,data_type=data_type,opt=opt)
#list_width_max.append(width_max)
#list_flops_max.append(flops_max)
#list_peak_max.append(peak_max)
############################################################
width_max, flops_max, peak_max, width_av, flops_av, peak_av=quf.Info_contract(tn_U,list_sites,data_type=data_type,opt=opt)
list_width_max.append(width_max)
list_flops_max.append(flops_max)
list_peak_max.append(peak_max)
list_width_av.append(width_av)
list_flops_av.append(flops_av)
list_peak_av.append(peak_av)
#quf.Plot_TN(tn_U,list_scale)
###############################################################
# print ( "E_init=",quf.energy_f(tn_U, list_sites, list_inter,optimize=opt) )
# print ( "chi", tn_U.max_bond() )
# #quf.expand_bond_MERA(tn_U, list_tags_I, method='pad',new_bond_dim=16, rand_strength=0.0100,rand_strength_u=0.010, data_type=data_type)
# #tn_U=quf.TN_to_iso(tn_U, list_tags_I,list_tags_U)
# print ( "chi_new", tn_U.max_bond() )
# print ("E_init_f=",quf.energy_f(tn_U, list_sites, list_inter,optimize=opt))
# tn_U.unitize_(method=method, allow_no_left_inds=True)
#print ("E_init=", quf.energy_f(tn_U, list_sites, list_inter,optimize=opt))
#################################################
# tnopt_mera=quf.auto_diff_mera(tn_U, list_sites,list_inter , opt, optimizer_c='L-BFGS-B', tags=[], jit_fn=jit_fn, device=device)
# tnopt_mera.optimizer = 'L-BFGS-B'
#tnopt_mera.optimizer = 'CG'
#tnopt_mera.optimizer = 'adam'
# tn_U = tnopt_mera.optimize(n=1000 ,ftol= 2.220e-10, maxfun= 10e+9, gtol= 1e-12, eps= 1.49016e-08, maxls=400, iprint = 0, disp=False)
#tn_U = tnopt_mera.optimize_basinhopping(n=100, nhop=10, temperature=0.5 ,ftol= 2.220e-10, maxfun= 10e+9, gtol= 1e-12, eps= 1.49016e-08, maxls=400, iprint = 1, disp=False)
#tnopt_mera.optimizer = 'TNC'
#tn_U = tnopt_mera.optimize( n=1000, stepmx=200, eta=0.25, maxCGit=200, accuracy=1e-12, maxfun=int(10e+8), gtol= 1e-10, disp=False)
#tn_U.unitize_(method=method, allow_no_left_inds=True)
#print ( "E_f=", quf.energy_f(tn_U, list_sites, list_inter,optimize=opt) )
#save_to_disk( tn_U, "Store/tn_U")
#y=tnopt_mera.losses[:]
#y_list=[ abs((y[i]-E_exact)/E_exact) for i in range(len(y)) ]
#x_list=[ i for i in range(len(y)) ]
# file = open("Data/mera.txt", "w")
# for index in range(len(y)):
# file.write(str(x_list[index]) + " "+ str(y[index])+ " " + "\n")
#print ( "chi=",chi, "width=",list_width_max, "flops=",list_flops_max, "peak_max", list_peak_max)
#file = open("Data/contractInfo.txt", "w")
#for index in range(len(chi)):
# file.write( str(chi[index]) + " " +str(list_width_max[index]) + " "+ str(list_flops_max[index])
# +" "+str(list_peak_max[index])+ " " + "\n")
print ( "chi=",chi, "width=",list_width_max,list_width_av, "flops=",list_flops_max,list_flops_av, "peak_max", list_peak_max,list_peak_av)
file = open("Data/contractInfo.txt", "w")
for index in range(len(chi)):
file.write( str(chi[index]) + " " +str(list_width_max[index]) + " "+ str(list_flops_max[index])
+" "+str(list_peak_max[index])+ " " +str(list_width_av[index])+" " +str(list_flops_av[index])+ " "+str(list_peak_av[index])+ "\n")