Hi everyone,

I have been using PETSc for a few years with a fully implicit TS ARKIMEX method 
and am now exploring the matrix free method option. Here is the list of PETSc 
options I typically use: -ts_dt 1.0e-12 -ts_adapt_time_step_increase_delay 5 
-snes_force_iteration -ts_max_time 1000.0 -ts_adapt_dt_max 2.0e-3 
-ts_adapt_wnormtype INFINITY -ts_exact_final_time stepover 
-fieldsplit_0_pc_type sor -ts_max_snes_failures -1 
-pc_fieldsplit_detect_coupling -ts_monitor -pc_type fieldsplit 
-fieldsplit_1_pc_type redundant -ts_max_steps 100

I started to compare the performance of the code without changing anything of 
the executable and simply adding "-snes_mf", I see a reduction of memory usage 
as expected and a benchmark that would usually take ~5min to run now takes 
~50min. Reading the documentation I saw that there are a few option to play 
with the matrix free method like -snes_mf_err, -snes_mf_umin, or switching to 
-snes_mf_type wp. I used and modified the values of each of these options 
separately but never saw a sizable change in runtime, is it expected?

And are there other ways to make the matrix free method faster? I saw in the 
documentation that you can define your own per-conditioner for instance. Let me 
know if you need additional information about the PETSc setup in the 
application I use.

Best,

Sophie

Reply via email to