<div class="gmail_quote">On Wed, Aug 31, 2011 at 09:41, Likun Tan <span dir="ltr">&lt;<a href="mailto:likunt@andrew.cmu.edu">likunt@andrew.cmu.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div id=":44e">so what I want to do is using MatMatSolve() to solve Ax=B, where A is a<br>
27*27 dense matrix, B is a 27*4000 dense matrix.<br>
<br>
1. For efficiency, i want to generate the matrix B in parallel. Since it<br>
cannot be partitioned by row, i generated a 4000*27 matrix and try to get<br>
the transpose of it. Should i use MatCreateTranspose()?<br>
<br>
2. Does MatMatSolve() solve Ax=B in parallel? </div></blockquote><div><br></div><div>Depends whether A is parallel, but you don&#39;t want it to anyway.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div id=":44e">If so, since A is not<br>
partitioned, is A visible in every process? or other steps i should do?<br></div></blockquote><div><br></div><div>You should redundantly create A and redundantly create parts of B. That is, every process will have</div><div>
<br></div><div>A : 27x27 dense matrix on COMM_SELF.</div><div>B : 27x(4000/np) dense matrix on COMM_SELF.</div><div><br></div><div>np is the number of processes in COMM_WORLD</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div id=":44e">
3. I have a 3D array (with PETSC_COMM_SELF) that will be used to generate<br>
all the elements of matrix B, how could I make it available in every<br>
process?</div></blockquote></div><br><div>Where did it come from? (How did you get this array in the first place?)</div>