FM matrices are slow and meant for debugging mostly (I thought, although the docs just give this warning if coloring is not available).
I would check the timings from -log_view and verify that the time is spent in MatFDColoringApply. Running with -info should print the number of colors (C). The cost of an FD matrix is about C x cost of an exact Jacobian. Roughly. You could check that. Mark On Sun, Dec 1, 2019 at 3:58 AM Li Luo <li....@kaust.edu.sa> wrote: > Dear Developers, > > I tried to use the multi-color finite-difference (MC-FD) method for > constructing the Jacobians. However, I find it is very slow compared to the > exact Jacobian. > My implementation of MC-FD Jacobian is posted below, would you please > check whether I am correct? Anything missed? Thank you! > > ////////// Setup phase: > MatStructure flag; > ISColoring iscoloring; > ierr = MatGetColoring(Jac,MATCOLORINGSL,&iscoloring); > ierr = MatFDColoringCreate(Jac,iscoloring,&this->matfdcoloring); > ierr = > MatFDColoringSetFunction(this->matfdcoloring,(PetscErrorCode > (*)(void))__libmesh_petsc_snes_residual,(void *)this); > ierr = MatFDColoringSetFromOptions(this->matfdcoloring); > ierr = ISColoringDestroy(&iscoloring); > > //////////// Apply: > ierr = MatZeroEntries(*jac);CHKERRQ(ierr); > ierr = > MatFDColoringApply(*jac,solver->matfdcoloring,x,msflag,snes); > > Best regards, > Li Luo > > ------------------------------ > This message and its contents, including attachments are intended solely > for the original recipient. If you are not the intended recipient or have > received this message in error, please notify me immediately and delete > this message from your computer system. Any unauthorized use or > distribution is prohibited. Please consider the environment before printing > this email.