On Fri, Dec 10, 2010 at 11:03 PM, Luke Bloy <span dir="ltr">&lt;<a href="mailto:luke.bloy@gmail.com">luke.bloy@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">


  
    
  
  <div bgcolor="#ffffff" text="#000000">
    <br>
    Thanks for the response.<br>
    <br>
    On 12/10/2010 04:18 PM, Jed Brown wrote:
    <blockquote type="cite">
      <div class="gmail_quote">On Fri, Dec 10, 2010 at 22:15, Luke Bloy
        <span dir="ltr">&lt;<a href="mailto:luke.bloy@gmail.com" target="_blank">luke.bloy@gmail.com</a>&gt;</span>
        wrote:<br>
        <blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
          My problem is that i have a large number (~500,000)  of b
          vectors that I would like to find solutions for. My plan is to
          call KSPsolve repeatedly with each b. However I wonder if
          there are any solvers or approaches that might benefit from
          the fact that my A matrix does not change. Are there any
          decompositions that might still be sparse that would offer a
          speed up?</blockquote>
      </div>
      <br>
      <div>1. What is the high-level problem you are trying to solve?
         There might be a better way.</div>
      <div><br>
      </div>
    </blockquote>
    I&#39;m solving a diffusion problem. essentially I have 2,000,000
    possible states for my system to be in. The system evolves based on
    a markov matrix M, which describes the probability the system moves
    from one state to another. This matrix is extremely sparse on the
    &lt; 100,000,000 nonzero elements. The problem is to pump
    mass/energy into the system at certain states. What I&#39;m interested
    in is the steady state behavior of the system.<br>
    <br>
    basically the dynamics can be summarized as <br>
    <br>
    d_{t+1} = M d_{t} + d_i<br>
    <br>
    Where d_t is the state vector at time t and d_i shows the states I
    am pumping energy into. I want to find d_t as t goes to infinity.<br>
    <br>
    My current approach is to solve the following system.<br>
    <br>
    (I-M) d = d_i<br>
    <br>
    I&#39;m certainly open to any suggestions you might have.<br>
    <br>
    <blockquote type="cite">
      <div>2. If you can afford the memory, a direct solve probably
        makes sense.</div>
    </blockquote>
    <br>
    My understanding is the inverses would generally be dense. I
    certainly don&#39;t have any memory to hold a 2 million by 2 million
    dense matrix, I have about 40G to play with. So perhaps a
    decomposition might work? Which might you suggest?<br></div></blockquote><div><br></div><div>Try -pc_type lu -pc_mat_factor_package &lt;mumps, superlu_dist&gt; once you have reconfigured using</div><div><br></div><div>
  --download-superlu_dist --download-mumps</div><div><br></div><div>They are sparse LU factorization packages that might work.</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div bgcolor="#ffffff" text="#000000">
    Thanks<br>
    Luke<br>
    <br>
  </div>

</blockquote></div><br><br clear="all"><br>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener<br>