Simon : For '-eps_hermitian -eps_largest_magnitude', why do you need 'spectral transform'? Try slepc default method for ex3.c.
Hong > > Hi, > > I'm running a slepc eigenvalue solver on a single machine with 198GB of > ram, > and solution space dimension 2^32. With double precision this means > each vector is 32GB. I'm using shell matrices to implement the matrix > vector product. I figured the easiest way to get eigenvalues is using > the slepc power method, but it is still eating all the ram. > > Running in gdb I see that slepc is allocating a bunch of vectors in > the spectral transform object (in STSetUp), and by this time it has > consumed > most of the 198GB of ram. I don't see why a spectral transform > shift of zero needs to alloc a whole bunch of memory. > > I'm wondering if there are some other options to slepc that can > reduce the memory footprint? A barebones implementation of the > power method only needs to keep two vectors, perhaps I should > just try doing this using petsc primitives. It's also possible that > I could spread the computation over two or more machines but > that's a whole other learning curve. > > The code I am running is essentially the laplacian grid > example from slepc (src/eps/examples/tutorials/ex3.c): > > ./ex3 -eps_hermitian -eps_largest_magnitude -eps_monitor ascii -eps_nev 1 > -eps_type power -n 65536 > > I also put this line in the source: > EPSSetDimensions(eps,1,2,1); > > Cheers, > > Simon. > >
