<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Apr 27, 2016 at 5:51 AM, Lisandro Dalcin <span dir="ltr"><<a href="mailto:dalcinl@gmail.com" target="_blank">dalcinl@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span class="">On 27 April 2016 at 11:53, Patrick Sanan <<a href="mailto:patrick.sanan@gmail.com">patrick.sanan@gmail.com</a>> wrote:<br>
><br>
<br>
> includes), and have them add a single registration line after<br>
> PetscInitialize which makes the new solver usable just as the built-in<br>
> ones are (via the options database and command line arguments).<br>
<br>
</span>Actually, if you build your plugin as a shared library, then you can just<br>
<br>
-dll_append pcsupercool.so<br>
<br>
and get it registered, no need to modify code.</blockquote><div><br></div><div>Note that this is how I organized our class project:</div><div><br></div><div>  <a href="https://github.com/jag20/CAAM520SRM">https://github.com/jag20/CAAM520SRM</a></div><div><br></div><div>and as you can see from the build system, its really easy.</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-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span class=""><br>
><br>
> I don't know of any packages that actually do this - are there some?<br>
><br>
<br>
</span>Don't know. But I would argue that many packages currently in PETSc<br>
could be reworked as plugins very easily.<br>
<br>
Oh! Hold on. We have some support for writing "plugins" in Python, and<br>
we dynamically load the Python shared library to bootstrap the Python<br>
runtime and then petsc4py. And IMHO, this is quite a bit more<br>
complicated that plain C plugins.<br>
<span class=""><br>
><br>
> Is this a hassle for reasons I haven't thought through fully yet?<br>
><br>
<br>
</span>The only hassle would be to updating it after new PETSc releases. And<br>
BTW, you could keep your code compatible with older PETSc releases<br>
with proper processor guards.<br>
<br>
A minor issue with dynamically loadable plugins is that using the<br>
command line is the only way to configure the package is through the<br>
command line. But that's a fair price to pay for not having to ever<br>
modify (nor recompile) your code.<br>
<span class=""><br>
> The specific interest I have in this is that a student of Olaf's has<br>
> been working with an interface to (non-MKL) PARDISO which I think<br>
> could be useful, and I'm also interested in there being an interface<br>
> to ILUPack.<br>
><br>
<br>
</span>Go for it. I can help with comments and review.<br>
<br>
PS: I'm not 100% sure about the status of dynamic lib loading in<br>
PETSc, but I can help with any required refactoring of that machinery<br>
to better support plugins.<br>
<br>
--<br>
Lisandro Dalcin<br>
============<br>
Research Scientist<br>
Computer, Electrical and Mathematical Sciences & Engineering (CEMSE)<br>
Extreme Computing Research Center (ECRC)<br>
King Abdullah University of Science and Technology (KAUST)<br>
<a href="http://ecrc.kaust.edu.sa/" rel="noreferrer" target="_blank">http://ecrc.kaust.edu.sa/</a><br>
<br>
4700 King Abdullah University of Science and Technology<br>
al-Khawarizmi Bldg (Bldg 1), Office # 0109<br>
Thuwal 23955-6900, Kingdom of Saudi Arabia<br>
<a href="http://www.kaust.edu.sa" rel="noreferrer" target="_blank">http://www.kaust.edu.sa</a><br>
<br>
Office Phone: <a href="tel:%2B966%2012%20808-0459" value="+966128080459">+966 12 808-0459</a><br>
</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>