-
I have managed to get some solutions working in serial mode and I'm happy to say that we have seen a boost in performance over the serial implementation of Xyce that we are currently utilizing. We are hoping that we will be able to take advantage of the parallel solving capabilities of SpiceSharp but we are struggling to get an answer when enabling localSolver for our subcircuit. While enabling parallel without localsolver doesn't give any performance boost. I have created a test below that demonstrates the problem. There are 2 places I have been experimenting with adding localsolver and I get "Could not determine the operating point." when I uncomment the line:
If you have any suggestions or guidance on how we might get some parallel solving working on a circuit like this, we would really appreciate it. I guess any other suggestions on how we could solve such a circuit more rapidly would be welcome too.
|
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 9 replies
-
I would have to take a closer look when I find the time. Thanks for pointing to this. In the meantime, here what's supposed to happen: Without local solver, only the methods for computing the model equations are parallelized. If most of the simulation time is spent on solving the matrix then there will not be a large benefit. This type of parallel computation is only something that benefits if you have many instances using complex model equations that take a long time. There is some overhead involved to avoid that instances write to the same matrix elements at the same time. If you use a local solver, the simulator will go one step further and tries to make a smaller "local" matrix that can be solved in a separate thread. After the "local" matrix is solved, the computed contributions are passed to the "global" solver which then gets solved in turn. This "passing of contributions" is overhead, so this type of parallel computation is only something that benefits to situations where there are many internal nodes to the "local" solver circuit. If there are many nodes or variables shared with the outside of that local circuit, then the global solver is still forced to solve a rather large matrix and the speed benefit would be limited. I have only been able to limited testing on the actual performance of parallel computations in Spice#, so I appreciate you sharing your findings. |
Beta Was this translation helpful? Give feedback.
Thanks!
I finally had a chance to test this in our own environment and can confirm that i s working well. I can confirm that we see a good performance increase with parallel local solvers. We haven't run a detailed comparison but can see that it is important to find a balance between the amount of work each solver does and the total number of solvers to keep the performance good. We did see that in one situation where we broke the circuit down into too many small sub circuits that the performance was worse than serial solving. This is as you have described and completely understandable.
We need to do a little more work to put this into production so it will liekly be a little while. I wil…