<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Dec 7, 2015 at 12:11 AM, Bibrak Qamar <span dir="ltr"><<a href="mailto:bibrakc@gmail.com" target="_blank">bibrakc@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div>Hi,<br><br></div>I am trying to apply a function on each element of a matrix. The function is the sigmoid function which transforms each element of the matrix.<br></div></div></blockquote><div><br></div><div>This pattern is problematic because we have no good way to indicate to PETSc that only 1 process intends</div><div>to change a value, so after each SetValues() you need an assembly. You want something like MatChop(),</div><div><br></div><div>  <a href="http://www.mcs.anl.gov/petsc/petsc-current/src/mat/utils/axpy.c.html#MatChop">http://www.mcs.anl.gov/petsc/petsc-current/src/mat/utils/axpy.c.html#MatChop</a></div><div><br></div><div>  Thanks,</div><div><br></div><div>     Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div></div>I am trying to approach it like this but get error. What could be the problem? Or is there a better way to do this?<br><div><br>int sigmoid(Mat x){<br>printf("in sigmoid\n");<br><br>PetscErrorCode ierr;<br>PetscInt       Istart, Iend, Ii, Ji, rows, cols;<br><br>PetscScalar     v = 0.0;<br>ierr = MatGetOwnershipRange(x,&Istart,&Iend);CHKERRQ(ierr);<br>MatGetSize(x,&rows,&cols);<br><br>for (Ii=Istart; Ii<Iend; Ii++) {<br>     for (Ji=0; Ji<cols; Ji++){<br>    ierr = MatGetValues(x,1,&Ii,1,&Ji,&v);CHKERRQ(ierr);<br>    v = mysigmoid(v);<br>    ierr = MatSetValues(x,1,&Ii,1,&Ji,&v,INSERT_VALUES);CHKERRQ(ierr);<br>    }<br>  }<br><br>MatAssemblyBegin(x,MAT_FINAL_ASSEMBLY);<br>MatAssemblyEnd(x,MAT_FINAL_ASSEMBLY);<br><br><br>MatView(x,PETSC_VIEWER_STDOUT_WORLD);<br>}<br><br><br></div><div>error msg is:<br><br>[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------<br>[0]PETSC ERROR: Object is in wrong state<br>[0]PETSC ERROR: Not for unassembled matrix<br>[0]PETSC ERROR: See <a href="http://www.mcs.anl.gov/petsc/documentation/faq.html" target="_blank">http://www.mcs.anl.gov/petsc/documentation/faq.html</a> for trouble shooting.<br>[0]PETSC ERROR: Petsc Release Version 3.6.3, Dec, 03, 2015 <br>[<br>[0]PETSC ERROR: #1 MatGetValues() line 1780 in /gpfs/home/petsc-3.6.3/src/mat/interface/matrix.c<br>[0]PETSC ERROR: #2 sigmoid() line 21 in neural.c<br></div><div><div><br><br></div><div>Thanks<span class=""><font color="#888888"><br clear="all"></font></span></div><span class=""><font color="#888888"><div><div><div><div><div dir="ltr"><span style="color:rgb(0,0,0)">Bibrak Qamar</span><br style="color:rgb(0,0,0)"><span style="color:rgb(0,0,0)"><br></span><font color="#888888"></font></div></div></div>
</div></div></font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">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</div>
</div></div>