I am not yet there. For now, I'm just checking how to parallelize
(or make sure it is working perfectly) the
building matrices workload.
Anyway, I was thinking about a really simple approach:
1) make sure the matrices are built in a parallel way.
2) try to solve the linear system (I still need to change my test
case to have a call to milonga_solver_linear_petsc) in a parallel way.
3) work on milonga_solve_eigen_slepc to make it parallel - if possible.
I have to say, the most I dig in, the more complicated the
parallelization looks. Which is more or less what I expected.
I'm humble on this subject: even if it is not possible to have an
amazing parallelized version, I'm ok if I can manage to make milonga
faster in, for example, building large matrices.
Oh, thanks for the handson. I'll devote some time to it.
> You can subscribe to PETSc mailing list and ask them there. You will get an answer right away (there is a lot of traffic though).
Thanks. I'll take a look.
> This should not be happening.
Yes, but it is. I'll try to figure out why it is happening and
see if I can fix it.
> Fire any question you have!
Oh, be sure I'll. I'm working on them.
>> I've been doing some minor changes to milonga to, first of all, just
>> try to make my tiny example run without errors using more than one
>> processor (PETSC compiled in debug mode).
>
> Can we see that repository?
Sure!
https://bitbucket.org/vitorvas/par-dev/src/par-dev/
(I'll be disappointed: when I say "minor" I really mean it...)
> I think you can use OpenMP (without MPI first) on the loop that builds
> the matrices in diffusion volumes. That should not be so hard.
There are calls to PETSc MatSetValue which *maybe* can be a problem,
but I agree this can be an interesting test.
> This is why I released the code GPL, but there are some people that still do not get the point.
Probably they never will.
It seems you should be there to check what your competitors are doing
while you watch Argentina win the tournement. ;-)
>> * "More or less" because petsc matrices can be automatically
>> distributed among processors, so the output is the same but
>> calculations - as long as I could see - are not.
>
> ?
Sorry, my text is confusing.
I wanted to say that when you use mpirun, petsc
matrices are pre-allocated using MatMPIAIJSetPreallocation. So, data is
somehow distributed among processors, I just could not verify how it is
assembled and at which point each processor get the whole set of data.
Need more study on this matter.
> I would imagine that any kind of output should be performed by only one process, say number zero.
I agree. Only the master makes I/O, for example.
I'm not planning to spend time on data writing at this moment, but
this matter really needs
a closer look.
>
https://www.paraview.org/Wiki/ParaView:FAQ#What_file_formats_does_ParaView_support.3F
Thanks for this pointer too.
I'll keep my studies on milonga (time allowing)
Regards,
Vitor
> --
> jeremy
>
www.seamplex.com