[petsc-dev] help on Summit

Mark Adams mfadams at lbl.gov
Mon Aug 30 14:35:48 CDT 2021


I see you have an MR. Should I try these changes in my repo?

On Mon, Aug 30, 2021 at 3:32 PM Mark Adams <mfadams at lbl.gov> wrote:

> I am in a branch of Stefano's and a user wants this for a milestone asap.
> Maybe you can send me the fix and I can add it manually.
> My branch is in a funny "main<>" state and I'm not sure how to pull, etc.,
> without Stefano.
> Thanks,
> Mark
>
>
> On Mon, Aug 30, 2021 at 3:28 PM Jacob Faibussowitsch <jacob.fai at gmail.com>
> wrote:
>
>> That did not seem to work.
>>
>>
>> So gcc didn’t ignore the hand-coded definitions in
>> src/sys/objects/device/interface/cupminterface.cxx
>>
>> See https://gitlab.com/petsc/petsc/-/merge_requests/4271 where I swap
>> constexpr for const and see if it works.
>>
>> Best regards,
>>
>> Jacob Faibussowitsch
>> (Jacob Fai - booss - oh - vitch)
>>
>> On Aug 30, 2021, at 14:14, Mark Adams <mfadams at lbl.gov> wrote:
>>
>> That did not seem to work.
>>
>> 15:09 main<> /gpfs/alpine/csc314/scratch/adams/petsc2$ mpicc --version
>> gcc (GCC) 9.1.0
>> Copyright (C) 2019 Free Software Foundation, Inc.
>> This is free software; see the source for copying conditions.  There is NO
>> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
>> PURPOSE.
>>
>> I have read "GCC 8.x (and later) fully supports all of C++17."
>>
>>
>>
>> On Mon, Aug 30, 2021 at 3:07 PM Jacob Faibussowitsch <jacob.fai at gmail.com>
>> wrote:
>>
>>> Yeah I suppose so, all the values we alias are integral types so static
>>> const should have equivalent compile-time assurance as constexpr.
>>>
>>> Best regards,
>>>
>>> Jacob Faibussowitsch
>>> (Jacob Fai - booss - oh - vitch)
>>>
>>> On Aug 30, 2021, at 13:44, Junchao Zhang <junchao.zhang at gmail.com>
>>> wrote:
>>>
>>> Can you use less fancy 'static const int'?
>>> --Junchao Zhang
>>>
>>>
>>> On Mon, Aug 30, 2021 at 1:02 PM Jacob Faibussowitsch <
>>> jacob.fai at gmail.com> wrote:
>>>
>>>> No luck with C++14
>>>>
>>>>
>>>> TL;DR: you need to have host and device compiler either both using
>>>> c++17 or neither using c++17.
>>>>
>>>> Long version:
>>>> C++17 among other things changed how static constexpr member variables
>>>> for classes worked. Previously if I had a class with a static constexpr
>>>> member variable I would have to not only declare it inline within the
>>>> class, but also define it within an executable otherwise the variable would
>>>> not actually have any physical memory address:
>>>>
>>>> // foo.hpp
>>>> class foo
>>>> {
>>>>   static constexpr int bar = 5;
>>>> };
>>>>
>>>> // foo.cpp
>>>> int foo::bar;
>>>>
>>>> In c++17 however this changed because you can have static “inline”
>>>> variables. All this does is force the compiler define the variable for you
>>>> instead. The issue of course is that static constexpr implicitly makes that
>>>> variable inline in c++17. So to sum it up:
>>>>
>>>> 1. The c++17 compiler (nvcc) sees the static constexpr variable, goes
>>>> “hmm ok I will define this in some undefined location”.
>>>> 2. The c++11/14 compiler comes along, sees your hand-coded definition
>>>> of the variable and goes “ah but I think I’ve seen this before, I’ll ignore
>>>> it”. This silent rejection is due to the hand-coded definition idiom being
>>>> deprecated from c++17 onwards. Stupid, I know.
>>>> 2. The linker (driven by the c++11/14 compiler since PETSc links using
>>>> the host compiler) comes along and now suddenly cannot find the literal
>>>> definition, because it doesn’t know what the c++17 did. Disaster!
>>>>
>>>> Best regards,
>>>>
>>>> Jacob Faibussowitsch
>>>> (Jacob Fai - booss - oh - vitch)
>>>>
>>>> On Aug 30, 2021, at 10:12, Mark Adams <mfadams at lbl.gov> wrote:
>>>>
>>>> No luck with C++14
>>>>
>>>>        CUDAC
>>>> arch-summit-hypre-cuda-dbg/obj/vec/is/sf/impls/basic/cuda/sfcuda.o
>>>>    CUDAC.dep
>>>> arch-summit-hypre-cuda-dbg/obj/vec/is/sf/impls/basic/cuda/sfcuda.o
>>>>      CLINKER arch-summit-hypre-cuda-dbg/lib/libpetsc.so.3.015.3
>>>> arch-summit-hypre-cuda-dbg/obj/sys/objects/device/impls/cupm/cuda/cupmcontext.o:(.rodata._ZN5Petsc13CUPMInterfaceILNS_14CUPMDeviceKindE0EE21cupmStreamNonBlockingE[_ZN5Petsc13CUPMInterfaceILNS_14CUPMDeviceKindE0EE21cupmStreamNonBlockingE]+0x0):
>>>> multiple definition of
>>>> `Petsc::CUPMInterface<(Petsc::CUPMDeviceKind)0>::cupmStreamNonBlocking'
>>>> arch-summit-hypre-cuda-dbg/obj/sys/objects/device/interface/cupminterface.o:(.rodata+0x44):
>>>> first defined here
>>>> /usr/bin/ld: link errors found, deleting executable
>>>> `arch-summit-hypre-cuda-dbg/lib/libpetsc.so.3.015.3'
>>>> collect2: error: ld returned 1 exit status
>>>> gmake[3]: *** [gmakefile:113:
>>>> arch-summit-hypre-cuda-dbg/lib/libpetsc.so.3.015.3] Error 1
>>>> gmake[2]: ***
>>>> [/gpfs/alpine/csc314/scratch/adams/petsc2/lib/petsc/conf/rules:50: libs]
>>>> Error 2
>>>> **************************ERROR*************************************
>>>>   Error during compile, check
>>>> arch-summit-hypre-cuda-dbg/lib/petsc/conf/make.log
>>>>   Send it and arch-summit-hypre-cuda-dbg/lib/petsc/conf/configure.log
>>>> to petsc-maint at mcs.anl.gov
>>>> ********************************************************************
>>>> gmake[1]: *** [makefile:40: all] Error 1
>>>>
>>>> On Mon, Aug 30, 2021 at 10:50 AM Mark Adams <mfadams at lbl.gov> wrote:
>>>>
>>>>> Stefano suggested C++14 in configure. I was using C++11.
>>>>>
>>>>> On Mon, Aug 30, 2021 at 10:46 AM Junchao Zhang <
>>>>> junchao.zhang at gmail.com> wrote:
>>>>>
>>>>>>  Petsc::CUPMInterface
>>>>>> @Jacob Faibussowitsch <jacob.fai at gmail.com>
>>>>>> --Junchao Zhang
>>>>>>
>>>>>>
>>>>>> On Mon, Aug 30, 2021 at 9:35 AM Mark Adams <mfadams at lbl.gov> wrote:
>>>>>>
>>>>>>> I was running fine this AM and am bouncing between modules to help
>>>>>>> two apps (ECP milestone season) at the same time and something broke. I did
>>>>>>> update main and I get the same error in main and a hypre branch of
>>>>>>> Stefano's.
>>>>>>> I started with a clean build and checked my modules...
>>>>>>> Any ideas?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Mark
>>>>>>>
>>>>>>>        CC arch-summit-hypre-cuda-dbg/obj/tao/interface/taosolver.o
>>>>>>>           CC arch-summit-hypre-cuda-dbg/obj/ts/interface/ts.o
>>>>>>>        CUDAC
>>>>>>> arch-summit-hypre-cuda-dbg/obj/mat/impls/dense/seq/cuda/densecuda.o
>>>>>>>    CUDAC.dep
>>>>>>> arch-summit-hypre-cuda-dbg/obj/mat/impls/dense/seq/cuda/densecuda.o
>>>>>>>        CUDAC
>>>>>>> arch-summit-hypre-cuda-dbg/obj/mat/impls/aij/seq/seqcusparse/aijcusparseband.o
>>>>>>>    CUDAC.dep
>>>>>>> arch-summit-hypre-cuda-dbg/obj/mat/impls/aij/seq/seqcusparse/aijcusparseband.o
>>>>>>>        CUDAC
>>>>>>> arch-summit-hypre-cuda-dbg/obj/ts/utils/dmplexlandau/cuda/landaucu.o
>>>>>>>    CUDAC.dep
>>>>>>> arch-summit-hypre-cuda-dbg/obj/ts/utils/dmplexlandau/cuda/landaucu.o
>>>>>>>        CUDAC
>>>>>>> arch-summit-hypre-cuda-dbg/obj/vec/vec/impls/seq/seqcuda/veccuda2.o
>>>>>>>    CUDAC.dep
>>>>>>> arch-summit-hypre-cuda-dbg/obj/vec/vec/impls/seq/seqcuda/veccuda2.o
>>>>>>>        CUDAC
>>>>>>> arch-summit-hypre-cuda-dbg/obj/mat/impls/aij/mpi/mpicusparse/mpiaijcusparse.o
>>>>>>>    CUDAC.dep
>>>>>>> arch-summit-hypre-cuda-dbg/obj/mat/impls/aij/mpi/mpicusparse/mpiaijcusparse.o
>>>>>>>        CUDAC
>>>>>>> arch-summit-hypre-cuda-dbg/obj/mat/impls/aij/seq/seqcusparse/aijcusparse.o
>>>>>>>    CUDAC.dep
>>>>>>> arch-summit-hypre-cuda-dbg/obj/mat/impls/aij/seq/seqcusparse/aijcusparse.o
>>>>>>>        CUDAC
>>>>>>> arch-summit-hypre-cuda-dbg/obj/vec/is/sf/impls/basic/cuda/sfcuda.o
>>>>>>>    CUDAC.dep
>>>>>>> arch-summit-hypre-cuda-dbg/obj/vec/is/sf/impls/basic/cuda/sfcuda.o
>>>>>>>      CLINKER arch-summit-hypre-cuda-dbg/lib/libpetsc.so.3.015.3
>>>>>>> arch-summit-hypre-cuda-dbg/obj/sys/objects/device/impls/cupm/cuda/cupmcontext.o:(.rodata._ZN5Petsc13CUPMInterfaceILNS_14CUPMDeviceKindE0EE21cupmStreamNonBlockingE[_ZN5Petsc13CUPMInterfaceILNS_14CUPMDeviceKindE0EE21cupmStreamNonBlockingE]+0x0):
>>>>>>> multiple definition of
>>>>>>> `Petsc::CUPMInterface<(Petsc::CUPMDeviceKind)0>::cupmStreamNonBlocking'
>>>>>>> arch-summit-hypre-cuda-dbg/obj/sys/objects/device/interface/cupminterface.o:(.rodata+0x44):
>>>>>>> first defined here
>>>>>>> /usr/bin/ld: link errors found, deleting executable
>>>>>>> `arch-summit-hypre-cuda-dbg/lib/libpetsc.so.3.015.3'
>>>>>>> collect2: error: ld returned 1 exit status
>>>>>>> gmake[3]: *** [gmakefile:113:
>>>>>>> arch-summit-hypre-cuda-dbg/lib/libpetsc.so.3.015.3] Error 1
>>>>>>> gmake[2]: ***
>>>>>>> [/gpfs/alpine/csc314/scratch/adams/petsc2/lib/petsc/conf/rules:50: libs]
>>>>>>> Error 2
>>>>>>> **************************ERROR*************************************
>>>>>>>   Error during compile, check
>>>>>>> arch-summit-hypre-cuda-dbg/lib/petsc/conf/make.log
>>>>>>>   Send it and
>>>>>>> arch-summit-hypre-cuda-dbg/lib/petsc/conf/configure.log to
>>>>>>> petsc-maint at mcs.anl.gov
>>>>>>> ********************************************************************
>>>>>>> gmake[1]: *** [makefile:40: all] Error 1
>>>>>>> make: *** [GNUmakefile:9: all] Error 2
>>>>>>>
>>>>>>
>>>>
>>> <make.log><configure.log>
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20210830/6f82bf50/attachment.html>


More information about the petsc-dev mailing list