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