xref: /petsc/src/tao/unconstrained/tutorials/rosenbrock4.c (revision ec9796c4f88c0039d05d273918e252d002ea08fe)
1*ec9796c4SHansol Suh static char help[] = "This example demonstrates the use of different performance portable backends in user-defined callbacks in Tao.\n";
2*ec9796c4SHansol Suh 
3*ec9796c4SHansol Suh #include "rosenbrock4.h"
4*ec9796c4SHansol Suh 
5*ec9796c4SHansol Suh int main(int argc, char **argv)
6*ec9796c4SHansol Suh {
7*ec9796c4SHansol Suh   PetscFunctionBeginUser;
8*ec9796c4SHansol Suh   PetscCall(PetscInitialize(&argc, &argv, (char *)0, help));
9*ec9796c4SHansol Suh   PetscCall(RosenbrockMain());
10*ec9796c4SHansol Suh   PetscCall(PetscFinalize());
11*ec9796c4SHansol Suh   return 0;
12*ec9796c4SHansol Suh }
13*ec9796c4SHansol Suh 
14*ec9796c4SHansol Suh /*TEST
15*ec9796c4SHansol Suh 
16*ec9796c4SHansol Suh   build:
17*ec9796c4SHansol Suh     requires: !complex !__float128 !single !defined(PETSC_USE_64BIT_INDICES)
18*ec9796c4SHansol Suh 
19*ec9796c4SHansol Suh   test:
20*ec9796c4SHansol Suh     suffix: 1
21*ec9796c4SHansol Suh     nsize: {{1 2 3}}
22*ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type nls -tao_gatol 1.e-4
23*ec9796c4SHansol Suh     output_file: output/rosenbrock1_1.out
24*ec9796c4SHansol Suh 
25*ec9796c4SHansol Suh   test:
26*ec9796c4SHansol Suh     suffix: 2
27*ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type lmvm -tao_gatol 1.e-3
28*ec9796c4SHansol Suh     output_file: output/rosenbrock1_2.out
29*ec9796c4SHansol Suh 
30*ec9796c4SHansol Suh   test:
31*ec9796c4SHansol Suh     suffix: 3
32*ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type ntr -tao_gatol 1.e-4
33*ec9796c4SHansol Suh     output_file: output/rosenbrock1_3.out
34*ec9796c4SHansol Suh 
35*ec9796c4SHansol Suh   test:
36*ec9796c4SHansol Suh     suffix: 4
37*ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type ntr -tao_mf_hessian -tao_ntr_pc_type none -tao_gatol 1.e-4
38*ec9796c4SHansol Suh     output_file: output/rosenbrock1_4.out
39*ec9796c4SHansol Suh 
40*ec9796c4SHansol Suh   test:
41*ec9796c4SHansol Suh     suffix: 5
42*ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type bntr -tao_gatol 1.e-4
43*ec9796c4SHansol Suh     output_file: output/rosenbrock1_5.out
44*ec9796c4SHansol Suh 
45*ec9796c4SHansol Suh   test:
46*ec9796c4SHansol Suh     suffix: 6
47*ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type bntl -tao_gatol 1.e-4
48*ec9796c4SHansol Suh     output_file: output/rosenbrock1_6.out
49*ec9796c4SHansol Suh 
50*ec9796c4SHansol Suh   test:
51*ec9796c4SHansol Suh     suffix: 7
52*ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type bnls -tao_gatol 1.e-4
53*ec9796c4SHansol Suh     output_file: output/rosenbrock1_7.out
54*ec9796c4SHansol Suh 
55*ec9796c4SHansol Suh   test:
56*ec9796c4SHansol Suh     suffix: 8
57*ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type bntr -tao_bnk_max_cg_its 3 -tao_gatol 1.e-4
58*ec9796c4SHansol Suh     output_file: output/rosenbrock1_8.out
59*ec9796c4SHansol Suh 
60*ec9796c4SHansol Suh   test:
61*ec9796c4SHansol Suh     suffix: 9
62*ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type bntl -tao_bnk_max_cg_its 3 -tao_gatol 1.e-4
63*ec9796c4SHansol Suh     output_file: output/rosenbrock1_9.out
64*ec9796c4SHansol Suh 
65*ec9796c4SHansol Suh   test:
66*ec9796c4SHansol Suh     suffix: 10
67*ec9796c4SHansol Suh     args: -tao_monitor_short -tao_type bnls -tao_bnk_max_cg_its 3 -tao_gatol 1.e-4
68*ec9796c4SHansol Suh     output_file: output/rosenbrock1_10.out
69*ec9796c4SHansol Suh 
70*ec9796c4SHansol Suh   test:
71*ec9796c4SHansol Suh     suffix: 11
72*ec9796c4SHansol Suh     args: -test_lmvm -tao_type bqnktr -tao_max_it 10 -tao_bqnk_mat_type lmvmbroyden
73*ec9796c4SHansol Suh     output_file: output/rosenbrock1_11.out
74*ec9796c4SHansol Suh 
75*ec9796c4SHansol Suh   test:
76*ec9796c4SHansol Suh     suffix: 12
77*ec9796c4SHansol Suh     args: -test_lmvm -tao_type bqnktr -tao_max_it 10 -tao_bqnk_mat_type lmvmbadbroyden
78*ec9796c4SHansol Suh     output_file: output/rosenbrock1_12.out
79*ec9796c4SHansol Suh 
80*ec9796c4SHansol Suh   test:
81*ec9796c4SHansol Suh     suffix: 13
82*ec9796c4SHansol Suh     args: -test_lmvm -tao_type bqnktr -tao_max_it 10 -tao_bqnk_mat_type lmvmsymbroyden
83*ec9796c4SHansol Suh     output_file: output/rosenbrock1_13.out
84*ec9796c4SHansol Suh 
85*ec9796c4SHansol Suh   test:
86*ec9796c4SHansol Suh     suffix: 14
87*ec9796c4SHansol Suh     args: -test_lmvm -tao_type bqnktr -tao_max_it 10 -tao_bqnk_mat_type lmvmbfgs
88*ec9796c4SHansol Suh     output_file: output/rosenbrock1_14.out
89*ec9796c4SHansol Suh 
90*ec9796c4SHansol Suh   test:
91*ec9796c4SHansol Suh     suffix: 15
92*ec9796c4SHansol Suh     args: -test_lmvm -tao_type bqnktr -tao_max_it 10 -tao_bqnk_mat_type lmvmdfp
93*ec9796c4SHansol Suh     output_file: output/rosenbrock1_15.out
94*ec9796c4SHansol Suh 
95*ec9796c4SHansol Suh   test:
96*ec9796c4SHansol Suh     suffix: 16
97*ec9796c4SHansol Suh     args: -test_lmvm -tao_type bqnktr -tao_max_it 10 -tao_bqnk_mat_type lmvmsr1
98*ec9796c4SHansol Suh     output_file: output/rosenbrock1_16.out
99*ec9796c4SHansol Suh 
100*ec9796c4SHansol Suh   test:
101*ec9796c4SHansol Suh     suffix: 17
102*ec9796c4SHansol Suh     args: -tao_monitor_short -tao_gatol 1e-4 -tao_type bqnls
103*ec9796c4SHansol Suh     output_file: output/rosenbrock1_17.out
104*ec9796c4SHansol Suh 
105*ec9796c4SHansol Suh   test:
106*ec9796c4SHansol Suh     suffix: 18
107*ec9796c4SHansol Suh     args: -tao_monitor_short -tao_gatol 1e-4 -tao_type blmvm
108*ec9796c4SHansol Suh     output_file: output/rosenbrock1_18.out
109*ec9796c4SHansol Suh 
110*ec9796c4SHansol Suh   test:
111*ec9796c4SHansol Suh     suffix: 19
112*ec9796c4SHansol Suh     args: -tao_monitor_short -tao_gatol 1e-4 -tao_type bqnktr -tao_bqnk_mat_type lmvmsr1
113*ec9796c4SHansol Suh     output_file: output/rosenbrock1_19.out
114*ec9796c4SHansol Suh 
115*ec9796c4SHansol Suh   test:
116*ec9796c4SHansol Suh     suffix: 20
117*ec9796c4SHansol Suh     args: -tao_monitor -tao_gatol 1e-4 -tao_type blmvm -tao_ls_monitor
118*ec9796c4SHansol Suh     output_file: output/rosenbrock1_20.out
119*ec9796c4SHansol Suh 
120*ec9796c4SHansol Suh   test:
121*ec9796c4SHansol Suh     suffix: 21
122*ec9796c4SHansol Suh     args: -test_lmvm -tao_type bqnktr -tao_max_it 10 -tao_bqnk_mat_type lmvmsymbadbroyden
123*ec9796c4SHansol Suh     output_file: output/rosenbrock1_21.out
124*ec9796c4SHansol Suh 
125*ec9796c4SHansol Suh   test:
126*ec9796c4SHansol Suh     suffix: 22
127*ec9796c4SHansol Suh     args: -tao_max_it 1 -tao_converged_reason
128*ec9796c4SHansol Suh     output_file: output/rosenbrock1_22.out
129*ec9796c4SHansol Suh 
130*ec9796c4SHansol Suh   test:
131*ec9796c4SHansol Suh     suffix: 23
132*ec9796c4SHansol Suh     args: -tao_max_funcs 0 -tao_converged_reason
133*ec9796c4SHansol Suh     output_file: output/rosenbrock1_23.out
134*ec9796c4SHansol Suh 
135*ec9796c4SHansol Suh   test:
136*ec9796c4SHansol Suh     suffix: 24
137*ec9796c4SHansol Suh     args: -tao_gatol 10 -tao_converged_reason
138*ec9796c4SHansol Suh     output_file: output/rosenbrock1_24.out
139*ec9796c4SHansol Suh 
140*ec9796c4SHansol Suh   test:
141*ec9796c4SHansol Suh     suffix: 25
142*ec9796c4SHansol Suh     args: -tao_grtol 10 -tao_converged_reason
143*ec9796c4SHansol Suh     output_file: output/rosenbrock1_25.out
144*ec9796c4SHansol Suh 
145*ec9796c4SHansol Suh   test:
146*ec9796c4SHansol Suh     suffix: 26
147*ec9796c4SHansol Suh     args: -tao_gttol 10 -tao_converged_reason
148*ec9796c4SHansol Suh     output_file: output/rosenbrock1_26.out
149*ec9796c4SHansol Suh 
150*ec9796c4SHansol Suh   test:
151*ec9796c4SHansol Suh     suffix: 27
152*ec9796c4SHansol Suh     args: -tao_steptol 10 -tao_converged_reason
153*ec9796c4SHansol Suh     output_file: output/rosenbrock1_27.out
154*ec9796c4SHansol Suh 
155*ec9796c4SHansol Suh   test:
156*ec9796c4SHansol Suh     suffix: 28
157*ec9796c4SHansol Suh     args: -tao_fmin 10 -tao_converged_reason
158*ec9796c4SHansol Suh     output_file: output/rosenbrock1_28.out
159*ec9796c4SHansol Suh 
160*ec9796c4SHansol Suh   test:
161*ec9796c4SHansol Suh     suffix: test_dbfgs
162*ec9796c4SHansol Suh     nsize: {{1 2 3}}
163*ec9796c4SHansol Suh     output_file: output/rosenbrock1_14.out
164*ec9796c4SHansol Suh     args: -n 10 -tao_type bqnktr -test_lmvm -tao_max_it 10 -tao_bqnk_mat_type lmvmdbfgs -tao_bqnk_mat_lmvm_scale_type none -tao_bqnk_mat_lbfgs_type {{inplace reorder}}
165*ec9796c4SHansol Suh 
166*ec9796c4SHansol Suh   test:
167*ec9796c4SHansol Suh     suffix: test_ddfp
168*ec9796c4SHansol Suh     nsize: {{1 2 3}}
169*ec9796c4SHansol Suh     output_file: output/rosenbrock1_14.out
170*ec9796c4SHansol Suh     args: -n 10 -tao_type bqnktr -test_lmvm -tao_max_it 10 -tao_bqnk_mat_type lmvmddfp -tao_bqnk_mat_lmvm_scale_type none -tao_bqnk_mat_ldfp_type {{inplace reorder}}
171*ec9796c4SHansol Suh 
172*ec9796c4SHansol Suh   test:
173*ec9796c4SHansol Suh     suffix: test_dqn_1
174*ec9796c4SHansol Suh     nsize: 1
175*ec9796c4SHansol Suh     output_file: output/rosenbrock1_29.out
176*ec9796c4SHansol Suh     args: -n 10 -tao_type bqnktr -test_lmvm -tao_max_it 10 -tao_bqnk_mat_type lmvmdqn -tao_bqnk_mat_lmvm_scale_type none -tao_bqnk_mat_lqn_type {{inplace reorder}}
177*ec9796c4SHansol Suh 
178*ec9796c4SHansol Suh   test:
179*ec9796c4SHansol Suh     suffix: test_dqn_2
180*ec9796c4SHansol Suh     nsize: 2
181*ec9796c4SHansol Suh     output_file: output/rosenbrock1_30.out
182*ec9796c4SHansol Suh     args: -n 10 -tao_type bqnktr -test_lmvm -tao_max_it 10 -tao_bqnk_mat_type lmvmdqn -tao_bqnk_mat_lmvm_scale_type none -tao_bqnk_mat_lqn_type {{inplace reorder}}
183*ec9796c4SHansol Suh 
184*ec9796c4SHansol Suh   test:
185*ec9796c4SHansol Suh     suffix: test_dqn_3
186*ec9796c4SHansol Suh     nsize: 3
187*ec9796c4SHansol Suh     output_file: output/rosenbrock1_31.out
188*ec9796c4SHansol Suh     args: -n 10 -tao_type bqnktr -test_lmvm -tao_max_it 10 -tao_bqnk_mat_type lmvmdqn -tao_bqnk_mat_lmvm_scale_type none -tao_bqnk_mat_lqn_type {{inplace reorder}}
189*ec9796c4SHansol Suh 
190*ec9796c4SHansol Suh   test:
191*ec9796c4SHansol Suh     suffix: test_dqn_diag
192*ec9796c4SHansol Suh     output_file: output/rosenbrock1_32.out
193*ec9796c4SHansol Suh     args: -n 10 -tao_type bqnktr -test_lmvm -tao_max_it 10 -tao_bqnk_mat_type lmvmdqn -tao_bqnk_mat_lmvm_scale_type diagonal -tao_bqnk_mat_lqn_type {{inplace reorder}}
194*ec9796c4SHansol Suh 
195*ec9796c4SHansol Suh   # test with a large update rejection tolerance to test that portion of code
196*ec9796c4SHansol Suh   test:
197*ec9796c4SHansol Suh     suffix: bfgs_rejects
198*ec9796c4SHansol Suh     output_file: output/rosenbrock4_bfgs_rejects.out
199*ec9796c4SHansol Suh     args: -tao_monitor_short -tao_gatol 1e-4 -tao_type blmvm -tao_view -n 10 -bs 10 -alpha 8.0 -tao_blmvm_mat_lmvm_eps 0.01 -tao_blmvm_mat_type lmvmbfgs -tao_blmvm_mat_lmvm_scale_type scalar
200*ec9796c4SHansol Suh 
201*ec9796c4SHansol Suh   test:
202*ec9796c4SHansol Suh     suffix: dbfgs_rejects
203*ec9796c4SHansol Suh     output_file: output/rosenbrock4_dbfgs_rejects.out
204*ec9796c4SHansol Suh     args: -tao_monitor_short -tao_gatol 1e-4 -tao_type blmvm -tao_view -n 10 -bs 10 -alpha 8.0 -tao_blmvm_mat_lmvm_eps 0.01 -tao_blmvm_mat_type lmvmdbfgs -tao_blmvm_mat_lmvm_scale_type scalar
205*ec9796c4SHansol Suh 
206*ec9796c4SHansol Suh TEST*/
207