Hello, I am using SimPEG to invert 16 dipole-dipole profiles for 3D structure. I basically work on the tutorial script: 3D Least-Squares Inversion of DC Resistivity Data — SimPEG 0.24.0 documentation My problem is that the inversion is too slow on my data (a lot of them). Is there a way to optimize it? (Of course I can play around the mesh, but data are many. is there a better solver or a way to ue a not python-native one)? thank you
Hi @fabioca. First I would make sure that you are using a fast solver, such as Pardiso or MUMPS.
You can pass a solver class to the DC simulation (dc.simulation.Simulation3DNodal
). And you can obtain the default solver based on your system and the ones you have installed through the get_default_solver
function. For example:
from simpeg.utils.solver_utils import get_default_solver
solver = get_default_solver()
print(solver)
dc_simulation = dc.simulation.Simulation3DNodal(
mesh, survey=dc_survey, sigmaMap=conductivity_map, storeJ=True, solver=solver
)
If the solver you are using is pymatsolver.SolverLU
or pymatsolver.Solver
, your simulation will definitely have a poor performance. Using Pardiso or MUMPS should greatly improve that.
Hope that helps!