[petsc-dev] Makefile.user and CUDA

Patrick Sanan patrick.sanan at gmail.com
Mon Oct 12 14:03:15 CDT 2020



> 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 <mailto: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 <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.

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"?
>   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/>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20201012/d37477cd/attachment.html>


More information about the petsc-dev mailing list