Thank you all for the info!

> On Apr 14, 2023, at 3:48 PM, Jacob Faibussowitsch <[email protected]> wrote:
> 
> More specifically for configure handling of C++ dialect. It has 3 modes:
> 
> 1. You don’t specify any C++ dialect (i.e. configure without passing 
> `--with-cxx-dialect`):
> 
> Configure will determine the dialect range for your given setup. It takes 
> into account all of the compilers (including “extra” ones like nvcc) it 
> finds, as well as all of your requested packages. It will also enable GNU 
> extensions if they are available, i.e. passing `-std=gnu++17` over 
> `-std=c++17`. From this range, it will select the highest possible dialect 
> and apply it to all builds.
> 
> 2. You specify `--with-cxx-dialect=14`:
> 
> Configure will do the above but will impose an arbitrary cap of C++14. If 
> something in your environment conflicts with this (i.e. maybe your compiler 
> doesn’t support it, or maybe a package requires C++17) it will produce a hard 
> error telling you why this won’t work. It still attempts to enable GNU 
> extensions as above.
> 
> 3. You specify `--with-cxx-dialect=c++14` OR you have `-std=c++14` in 
> `[--]CXXFLAGS` and/or `[--]CXXOPTFLAGS`:
> 
> configure assumes you know something it doesn’t. It will blindly apply 
> exactly `-std=c++14` everywhere. This includes building PETSc itself and all 
> packages that PETSc builds. It will still check your compiler supports 
> `-std=c++14` though (and error if it does not).
> 
> So if your goal is to have the highest available dialect chosen for you, do 
> nothing. Do not pass any dialect flags, and do not set them in your 
> `CXXFLAGS` or `CXXOPTFLAGS`. Configure will do The Right Thing.
> 
> If your goal is to explicitly set the dialect, we recommend using option 2 
> since that might still allow you to enable GNU extensions. 
> 
> If something is just not working then 1. send us your configure.log — maybe 
> we have a bug — and 2. use option #3, it will do exactly as you ask.
> 
> Best regards,
> 
> Jacob Faibussowitsch
> (Jacob Fai - booss - oh - vitch)
> 
>> On Apr 14, 2023, at 18:18, Satish Balay via petsc-users 
>> <[email protected]> wrote:
>> 
>> Hm depending on what you are seeking - you'll have to look at multiple 
>> places [and co-related the info from them]
>> 
>> - you can check one of the pipelines to see exactly what jobs are run (and 
>> the logs of the jobs for details). for ex:
>> https://gitlab.com/petsc/petsc/-/pipelines/836609909
>> 
>> - most of the build scripts are at config/examples/arch-ci-*.py - so thats 
>> one way to get a view of what pkgs are tested by what jobs..
>> 
>> balay@p1 /home/balay/petsc (main =)
>> $ ls config/examples/arch-ci-*.py |wc -l
>> 56
>> 
>> - And wrt specific examples corresponding to external pkg - say - 
>> superlu_dist - you can do something like:
>> 
>> balay@p1 /home/balay/petsc (main =)
>> $ git grep 'requires:' src |grep superlu_dist |head -5
>> src/ksp/ksp/tests/ex17.c:      requires: superlu_dist complex
>> src/ksp/ksp/tests/ex17.c:      requires: superlu_dist complex
>> src/ksp/ksp/tests/ex33.c:      requires: superlu_dist !complex
>> src/ksp/ksp/tests/ex33.c:      requires: superlu_dist !complex
>> src/ksp/ksp/tests/ex49.c:      requires: superlu_dist
>> 
>> etc.
>> 
>> - Wrt C++ dialect:
>> 
>> balay@p1 /home/balay/petsc (main =)
>> $ git grep self.minCxxVersion config/BuildSystem/config/packages
>> config/BuildSystem/config/packages/AMReX.py:    self.minCxxVersion     = 
>> 'c++14'
>> config/BuildSystem/config/packages/h2opus.py:    self.minCxxVersion          
>> = 'c++14'
>> config/BuildSystem/config/packages/kokkos.py:    self.minCxxVersion    = 
>> 'c++17'
>> config/BuildSystem/config/packages/raja.py:    self.minCxxVersion      = 
>> 'c++14'
>> config/BuildSystem/config/packages/sycl.py:    self.minCxxVersion    = 
>> 'c++17'
>> balay@p1 /home/balay/petsc (main =)
>> $ git grep self.maxCxxVersion config/BuildSystem/config/packages
>> config/BuildSystem/config/packages/MOAB.py:    self.maxCxxVersion     = 
>> 'c++14'
>> config/BuildSystem/config/packages/amgx.py:    self.maxCxxVersion    = 
>> 'c++17' # https://github.com/NVIDIA/AMGX/issues/231
>> config/BuildSystem/config/packages/elemental.py:    self.maxCxxVersion    = 
>> 'c++14'
>> config/BuildSystem/config/packages/grid.py:    self.maxCxxVersion  = 'c++17'
>> config/BuildSystem/config/packages/kokkos.py:    self.maxCxxVersion    = 
>> 'c++17'
>> 
>> However configure determines the max that the compiler supports and
>> attempts to use that [when only min is set]. And this info is usually
>> in configure.log [or make.log] for the corresponding build.
>> 
>> Satish
>> 
>> 
>>> On Fri, 14 Apr 2023, Alexander Lindsay wrote:
>>> 
>>> Hi, is there a place I can look to understand the testing recipes used in
>>> PETSc CI, e.g. what external packages are included (if any), what C++
>>> dialect is used for any external packages built with C++, etc.?
>>> 
>>> Alex
>>> 
>> 
> 

Reply via email to