<div dir="ltr"><div dir="ltr"><div>Thanks, I missed that,</div><div><br></div><div>I do care about scalability, the long term plan is to make it fully compatible on a cluster so I guess I would need to convert it to PETSc binary format before reading it in. <br></div><div><br></div><div>Is this the file you were referring to <a href="https://github.com/erdc/petsc-dev/blob/master/bin/pythonscripts/PetscBinaryIO.py">https://github.com/erdc/petsc-dev/blob/master/bin/pythonscripts/PetscBinaryIO.py</a></div><div><br></div><div>Cannot seem to find docs on how to use it, do you happen to have any examples? <br></div><div><br></div><div>All the best,</div><div>S<br></div><div><br></div><div><br></div><div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Nov 7, 2018 at 4:07 PM Jed Brown <<a href="mailto:jed@jedbrown.org">jed@jedbrown.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Please always use "reply-all" so that your messages go to the list.<br>
This is standard mailing list etiquette.  It is important to preserve<br>
threading for people who find this discussion later and so that we do<br>
not waste our time re-answering the same questions that have already<br>
been answered in private side-conversations.  You'll likely get an<br>
answer faster that way too.<br>
<br>
Sal Am <<a href="mailto:tempohoper@gmail.com" target="_blank">tempohoper@gmail.com</a>> writes:<br>
<br>
> Thank you Jed for the quick response!<br>
><br>
>><br>
>> Yes, of course the formats would have to match.  I would recommend<br>
>> writing the files in an existing format such as PETSc's binary format.<br>
>><br>
><br>
> Unfortunately I do not think I can change the source code to output those<br>
> two files in PETSc format and it would probably take a very long time<br>
> converting everything into PETSc (it is not even my code).<br>
<br>
File-based workflows are very often bottlenecks.  You can also use any<br>
convenient software (e.g., Python or Matlab/Octave) to convert your<br>
custom binary formats to PETSc binary format (see PetscBinaryIO provided<br>
with PETSc), at which point you'll be able to read in parallel.  If you<br>
don't care about scalability or only need to read once, then you can<br>
write code of the type you propose.<br>
<br>
> Do you have any other suggestions on how to read in those two complex<br>
> binary files? Also why would it be more difficult to parallelise as<br>
> I thought getting the two files in PETSc vector format would allow me to<br>
> use the rest of PETSc library the usual way?<br>
><br>
> Kind regards,<br>
> S<br>
><br>
><br>
> On Mon, Nov 5, 2018 at 4:49 PM Jed Brown <<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>> wrote:<br>
><br>
>> Sal Am via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>> writes:<br>
>><br>
>> > Hi,<br>
>> ><br>
>> > I am trying to solve a Ax=b complex system. the vector b and "matrix" A<br>
>> are<br>
>> > both binary and NOT created by PETSc. So I keep getting error messages<br>
>> that<br>
>> > they are not correct format when I read the files with<br>
>> PetscViewBinaryOpen,<br>
>> > after some digging it seems that one cannot just read a binary file that<br>
>> > was created by another software.<br>
>><br>
>> Yes, of course the formats would have to match.  I would recommend<br>
>> writing the files in an existing format such as PETSc's binary format.<br>
>> While the method you describe can be made to work, it will be more work<br>
>> to make it parallel.<br>
>><br>
>> > How would I go on to solve this problem?<br>
>> ><br>
>> > More info and trials:<br>
>> ><br>
>> > "matrix" A consists of two files, one that contains row column index<br>
>> > numbers and one that contains the non-zero values. So what I would have<br>
>> to<br>
>> > do is multiply the last term in a+b with PETSC_i to get a real +<br>
>> imaginary<br>
>> > vector A.<br>
>> ><br>
>> > vector b is in binary, so what I have done so far (not sure if it works)<br>
>> is:<br>
>> ><br>
>> > std::ifstream input("Vector_b.bin", std::ios::binary );<br>
>> > while (input.read(reinterpret_cast<char*>(&v), sizeof(float)))<br>
>> >      ierr    = VecSetValues(u,1,&iglobal,&v,INSERT_VALUES);CHKERRQ(ierr);<br>
>> ><br>
>> > where v is a PetscScalar.<br>
>> ><br>
>> > Once I am able to read both matrices I think I can figure out the solvers<br>
>> > to solve the system.<br>
>> ><br>
>> > All the best,<br>
>> > S<br>
>><br>
</blockquote></div>