Eric Keiter
05/17/2021, 9:38 PMMatthew Guthaus
05/17/2021, 9:39 PMEric Keiter
05/17/2021, 9:44 PMEric Keiter
05/17/2021, 9:44 PMMatthew Guthaus
05/17/2021, 9:45 PMEric Keiter
05/17/2021, 9:45 PMMatthew Guthaus
05/17/2021, 9:46 PMEric Keiter
05/17/2021, 9:50 PMEric Keiter
05/17/2021, 9:50 PMMatthew Guthaus
05/17/2021, 9:51 PMMatthew Guthaus
05/17/2021, 9:52 PMMatthew Guthaus
05/17/2021, 9:53 PMEric Keiter
05/17/2021, 9:53 PMMatthew Guthaus
05/17/2021, 10:06 PMEric Keiter
05/18/2021, 9:03 PMEric Keiter
05/18/2021, 9:06 PMEric Keiter
05/18/2021, 9:06 PMEric Keiter
05/18/2021, 9:06 PMMatthew Guthaus
05/18/2021, 9:07 PMMatthew Guthaus
05/18/2021, 9:08 PMEric Keiter
05/18/2021, 9:08 PMEric Keiter
05/18/2021, 9:09 PMEric Keiter
05/18/2021, 9:09 PMMatthew Guthaus
05/21/2021, 3:40 PMZOLTAN Load balancing method = 10 (HYPERGRAPH)
Step size reached minimum step size bound
Step size reached minimum step size bound
DC Operating Point Failed. Exiting transient loop
When I built Xyce, I used these options:
../configure CXXFLAGS="-O3 -std=c++11" ARCHDIR="/software/XyceLibs/Parallel" CPPFLAGS="-I/usr/include/suitesparse" --enable-mpi CXX=mpicxx CC=mpicc F77=mpif77 --prefix=/software/Xyce/Parallel
I was going to use that Xyce_Bundle, but it only builds the serial version.Matthew Guthaus
05/21/2021, 3:48 PMmpicxx --version
g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
$ mpicc --version
gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
$ mpif77 --version
GNU Fortran (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Eric Keiter
05/21/2021, 6:11 PMZOLTAN Load balancing method = 10 (HYPERGRAPH)
indicates that Xyce is attempting to use an iterative solver. Iterative solvers are easier to set up in parallel but tend to be less robust. Direct solvers (which is the Xyce default in serial) are very robust, but hard to make scale well in parallel. Anyway, parallel Xyce looks at the size of the problem, and if the problem size is below a number (I can’t recall the exact number, but it might be 1000 unknowns), it will do the linear solver phase of the calculation using a serial direct solver on proc 0. The device evaluation will still be parallel, however. Direct solvers actually work pretty well at much larger sizes than 1000, so arguably our threshold for direct/iterative is too low. Anyway, you can force Xyce to use a direct method by adding .options LINSOL type=klu
to the netlist.Eric Keiter
05/21/2021, 6:13 PMMatthew Guthaus
05/21/2021, 6:13 PMEric Keiter
05/21/2021, 6:14 PMMatthew Guthaus
05/21/2021, 6:14 PMEric Keiter
05/21/2021, 6:14 PMMatthew Guthaus
05/21/2021, 6:14 PMEric Keiter
05/21/2021, 6:15 PMMatthew Guthaus
05/21/2021, 6:15 PMEric Keiter
05/21/2021, 6:15 PMMatthew Guthaus
05/21/2021, 6:15 PMEric Keiter
05/21/2021, 6:17 PMEric Keiter
05/21/2021, 6:20 PMEric Keiter
05/21/2021, 6:21 PMMatthew Guthaus
05/21/2021, 6:23 PMMatthew Guthaus
05/21/2021, 6:23 PMEric Keiter
05/21/2021, 6:24 PMMatthew Guthaus
05/21/2021, 6:24 PMEric Keiter
05/21/2021, 10:02 PMEric Keiter
05/21/2021, 10:05 PM.options linsol type=klu
with .options linsol use_ifpack_factory=1
then the iterative solver will work.Eric Keiter
05/21/2021, 10:07 PMEric Keiter
05/21/2021, 10:10 PMEric Keiter
05/21/2021, 10:12 PMMatthew Guthaus
05/22/2021, 2:40 AMMatthew Guthaus
05/22/2021, 2:44 AM