[petsc-dev] Makefile.user and CUDA

Matthew Knepley knepley at gmail.com
Mon Oct 12 19:21:37 CDT 2020


On Mon, Oct 12, 2020 at 3:03 PM Patrick Sanan <patrick.sanan at gmail.com>
wrote:

>
>
> Am 12.10.2020 um 20:11 schrieb Matthew Knepley <knepley at gmail.com>:
>
> On Mon, Oct 12, 2020 at 3:47 AM Patrick Sanan <patrick.sanan at gmail.com>
> wrote:
>
>> I have a toy application code built on PETSc which needs to compile and
>> link a .cu file.
>>
>> I'd love to be able to configure PETSc (with CUDA), and then use a
>> modified version of share/petsc/Makefile.user to compile and link my code,
>> using a consistent set of compilers, libraries, and flags.  Makefile.user
>> uses petsc.pc (via pkg-config) and implicit GNU make rules to do almost
>> everything for you for C, C++, and Fortran.
>>
>> However, I don't think it currently supports CUDA, and I'm not familiar
>> enough with BuildSystem or pkg-config to quickly add support myself, so I
>> resort to the "old" way, including things like this in my Makefile:
>>
>
> Okay, here is where the pkgconf file gets generated, and in fact where the
> language sections are
>
>
> https://gitlab.com/petsc/petsc/-/blob/master/config/PETSc/Configure.py#L161
>
> I think you can just put a "CUDA" section in. I do not know what names to
> use, so I have not done it.
>
>
> That's where I got stuck as well :D
>
> I can follow the pattern to get the compiler (CUDAC) and some of the
> flags, but that doesn't seem to have all the information that CUDAC,
> CUDAC_FLAGS, CUDA_INCLUDE, and CUDA_LIB provide in petscvariables.
>

I can dig around and find all these for you.


> Naively I would assume I'd need to dig around to figure out how those
> variables are populated, and get the same info into petsc.pc
>
> But, I worry that I'm misunderstanding fundamentals about pkg-config and
> how it is supposed to work. Am I free to put whatever fields I want in
> there, or is there some authority on what's "standard"?
>
> I do not understand anything about pkg-config (and think it is a
fundamentally misguided mechanism). Jed, how should CUDA work with this?

  Thanks,

     Matt

>   Thanks,
>
>      Matt
>
>
>> include ${PETSC_DIR}/${PETSC_ARCH}/lib/petsc/conf/petscvariables
>>
>> %.o : %.cu
>>         $(CUDAC) -c $(CUDAC_FLAGS) $(CUDA_INCLUDE) -o $@ $<
>>
>> app : ${OBJ}
>>         $(LINK.cc <http://link.cc/>) -o $@ $^ $(LDLIBS) $(CUDA_LIB)
>>
>>
>> Is it possible / easy / advisable to add CUDA support to petsc.pc ?
>>
>
>
> --
> What most experimenters take for granted before they begin their
> experiments is infinitely more interesting than any results to which their
> experiments lead.
> -- Norbert Wiener
>
> https://www.cse.buffalo.edu/~knepley/
> <http://www.cse.buffalo.edu/~knepley/>
>
>
>

-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener

https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20201012/f5bc6a72/attachment-0001.html>


More information about the petsc-dev mailing list