NLAFET / SpLLT

Sparse Cholesky solver implemented with a runtime system
BSD 3-Clause "New" or "Revised" License
6 stars 1 forks source link

Does driver programs apply fill-in reduction reordering? #2

Open learning-chip opened 1 year ago

learning-chip commented 1 year ago

Looking through the test script and drivers like test_solve_phasis.F90 and spllt_omp_bench.F90, they don't seem to apply fill-in reduction reordering, right?

I do see calls to metis_order() (defined in spral?) and amd_order() (defined in hsl_ma87?) scattered around some other scripts, but not used in benchmark scripts

https://github.com/NLAFET/SpLLT/blob/08a181d9088daf4bf9b72856e705e0b0263bfe3b/drivers/run_ma87.f90#L182-L183

https://github.com/NLAFET/SpLLT/blob/08a181d9088daf4bf9b72856e705e0b0263bfe3b/spllt_test.F90#L353-L356

learning-chip commented 1 year ago

Ah, I just found that METIS ordering is by default called (implicitly) during analysis:

https://github.com/NLAFET/SpLLT/blob/08a181d9088daf4bf9b72856e705e0b0263bfe3b/src/spllt_analyse_mod.F90#L108-L109

https://github.com/NLAFET/SpLLT/blob/08a181d9088daf4bf9b72856e705e0b0263bfe3b/src/spllt_analyse_mod.F90#L129-L131

Then metis_order() is called inside analyse_double() of spral/ssids.f90

A follow-up question: Is there a convinient way to check the number of entries on L? The fkeep%info%num_factor returned by spllt_analyse is 0.