On Mon, Oct 12, 2020 at 3:03 PM Patrick Sanan <[email protected]> wrote:
> > > Am 12.10.2020 um 20:11 schrieb Matthew Knepley <[email protected]>: > > On Mon, Oct 12, 2020 at 3:47 AM Patrick Sanan <[email protected]> > 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/>
