Skip to content

Commit

Permalink
Merge pull request #23 from firedrakeproject/connorjward/merge-upstream
Browse files Browse the repository at this point in the history
Update to 3.22.1
  • Loading branch information
connorjward authored Nov 12, 2024
2 parents 1c1d65e + d10bbdc commit ebc0e51
Show file tree
Hide file tree
Showing 146 changed files with 1,279 additions and 998 deletions.
16 changes: 15 additions & 1 deletion .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ check-ci-settings:
- make CFLAGS="${MAKE_CFLAGS}" CXXFLAGS="${MAKE_CXXFLAGS}" FFLAGS="${MAKE_FFLAGS}" CUDAFLAGS="${MAKE_CUDAFLAGS}"
- if [ ! -z ${ENABLE_CHECK+x} ]; then make CFLAGS="${MAKE_CFLAGS}" CXXFLAGS="${MAKE_CXXFLAGS}" FFLAGS="${MAKE_FFLAGS}" CUDAFLAGS="${MAKE_CUDAFLAGS}" check; fi
- make CFLAGS="${MAKE_TEST_CFLAGS}" CXXFLAGS="${MAKE_TEST_CXXFLAGS}" FFLAGS="${MAKE_TEST_FFLAGS}" CUDAFLAGS="${MAKE_CUDAFLAGS}" allgtests-tap gmakesearch="${TEST_SEARCH}" TIMEOUT=${TIMEOUT}
- if [ ! -z ${ENABLE_COMPILETESTS+x} ]; then make -j 16 CFLAGS="${MAKE_TEST_CFLAGS}" CXXFLAGS="${MAKE_TEST_CXXFLAGS}" FFLAGS="${MAKE_TEST_FFLAGS}" test PRINTONLY=1; fi
variables:
PYTHON: python3
MAKE_CFLAGS: -Werror -Wmissing-field-initializers
Expand Down Expand Up @@ -142,7 +143,7 @@ uni-complex-float-int64:
variables:
CONFIG_OPTS: --with-mpi=0 --with-scalar-type=complex --with-precision=single --with-64-bit-indices
TEST_SEARCH: ts_tutorials-ex11_adv_2d_quad_%
LOAD_MODULES: gcc/12.1.0 mpich/4.1-gcc-12.1.0
LOAD_MODULES: gcc/12.1.0

c99-mlib-static-py:
extends: .stage-1
Expand All @@ -159,7 +160,10 @@ clang-uni:
CONFIG_OPTS: --with-cc=clang --with-cxx=clang++ --with-mpi=0 --with-strict-petscerrorcode
MAKE_CFLAGS: -Werror -Wmissing-field-initializers -Wundef -Wextra-semi-stmt
MAKE_CXXFLAGS: -Werror -Wzero-as-null-pointer-constant -Wundef -Wextra-semi-stmt -Wextra-semi
MAKE_TEST_CFLAGS: -Werror -Wmissing-field-initializers -Wundef -Wextra-semi-stmt
MAKE_TEST_CXXFLAGS: -Werror -Wzero-as-null-pointer-constant -Wundef -Wextra-semi-stmt -Wextra-semi
TEST_SEARCH: snes_tutorials-ex48%
ENABLE_COMPILETESTS: 1

gcc-lto:
extends: .stage-1
Expand Down Expand Up @@ -547,6 +551,16 @@ linux-hip-double:
variables:
TEST_ARCH: arch-ci-linux-hip-double

linux-hip-cmplx:
extends:
- .stage-3
- .linux_test_noflags
- .coverage-disable
tags:
- gpu:amd, os:linux
variables:
TEST_ARCH: arch-ci-linux-hip-cmplx

linux-sycl-double:
extends:
- .stage-3
Expand Down
2 changes: 1 addition & 1 deletion config/BuildSystem/config/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@ def addArgStartsWith(self,args,sw,value):
return keep

def rmValueArgStartsWith(self,args,sw,value):
'''Remove a value from arguements that start with sw'''
'''Remove a value from arguments that start with sw'''
if not isinstance(sw, list): sw = [sw]
keep = []
for i in args:
Expand Down
2 changes: 1 addition & 1 deletion config/BuildSystem/config/packages/MPICH.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
class Configure(config.package.GNUPackage):
def __init__(self, framework):
config.package.GNUPackage.__init__(self, framework)
self.version = '4.2.3rc1'
self.version = '4.2.3'
self.download = ['https://github.com/pmodels/mpich/releases/download/v'+self.version+'/mpich-'+self.version+'.tar.gz',
'https://www.mpich.org/static/downloads/'+self.version+'/mpich-'+self.version+'.tar.gz', # does not always work from Python? So add in web.cels URL below
'https://web.cels.anl.gov/projects/petsc/download/externalpackages'+'/mpich-'+self.version+'.tar.gz']
Expand Down
2 changes: 1 addition & 1 deletion config/BuildSystem/config/packages/mpi4py.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
class Configure(config.package.Package):
def __init__(self, framework):
config.package.Package.__init__(self, framework)
self.download = ['https://github.com/mpi4py/mpi4py/releases/download/4.0.0/mpi4py-4.0.0.tar.gz']
self.download = ['https://github.com/mpi4py/mpi4py/releases/download/4.0.1/mpi4py-4.0.1.tar.gz']
self.functions = []
self.includes = []
self.useddirectly = 0
Expand Down
3 changes: 3 additions & 0 deletions config/BuildSystem/config/packages/petsc4py.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,12 @@ def Install(self):
return self.installDir

def configureLibrary(self):
import sys
if not self.sharedLibraries.useShared and not self.setCompilers.isCygwin(self.log):
raise RuntimeError('petsc4py requires PETSc be built with shared libraries; rerun with --with-shared-libraries')
chkpkgs = ['numpy']
if sys.version_info >= (3, 12):
chkpkgs.append('setuptools')
npkgs = []
for pkg in chkpkgs:
if not getattr(self.python,pkg): npkgs.append(pkg)
Expand Down
7 changes: 7 additions & 0 deletions config/BuildSystem/config/packages/python.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ def __init__(self, framework):
config.package.Package.__init__(self, framework)
self.pyver = None
self.cyver = None
self.setuptools = 0
self.cython = 0
self.numpy = 0
return
Expand Down Expand Up @@ -32,6 +33,12 @@ def configure(self):
except:
self.logPrint('Unable to determine version of',self.pyexe)

try:
output,err1,ret1 = config.package.Package.executeShellCommand([self.pyexe,'-c','import setuptools;print(setuptools.__version__)'],timeout=60, log = self.log)
self.setuptools = 1
except:
self.logPrint('Python being used '+self.pyexe+' does not have the setuptools package')

try:
self.cyver,err1,ret1 = config.package.Package.executeShellCommand([self.pyexe,'-c','import cython;print(cython.__version__)'],timeout=60, log = self.log)
self.cython = 1
Expand Down
4 changes: 2 additions & 2 deletions config/BuildSystem/config/packages/slepc.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
class Configure(config.package.Package):
def __init__(self, framework):
config.package.Package.__init__(self, framework)
self.gitcommit = 'baf2b4f4b79fbc8f8aee8e2925b3f1912f6904ef' # (pre-3.22.0) main sep-28-2024
#self.gitcommit = 'v'+self.version
self.version = '3.22.0'
self.gitcommit = 'v'+self.version
self.download = ['git://https://gitlab.com/slepc/slepc.git','https://gitlab.com/slepc/slepc/-/archive/'+self.gitcommit+'/slepc-'+self.gitcommit+'.tar.gz']
self.functions = []
self.includes = []
Expand Down
2 changes: 1 addition & 1 deletion config/BuildSystem/config/setCompilers.py
Original file line number Diff line number Diff line change
Expand Up @@ -1692,7 +1692,7 @@ def checkSYCLPreprocessor(self):
for compiler in self.generateSYCLPreprocessorGuesses():
try:
if self.getExecutable(compiler, resultName = 'SYCLPP'):
if not self.checkPreprocess('#include <CL/sycl.hpp>\n void testFunction() {return;};'):
if not self.checkPreprocess('#include <sycl/sycl.hpp>\n void testFunction() {return;};'):
raise RuntimeError('Cannot preprocess SYCL with '+self.SYCLPP+'.')
return
except RuntimeError as e:
Expand Down
2 changes: 2 additions & 0 deletions config/PETSc/Configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,8 @@ def configureSanitize(self):
'''Checks if fsanitize is supported'''
if self.checkLink('#if defined(__has_feature)\n#if !__has_feature(address_sanitizer)\nGarbage\n#endif\n#else\nGarbage\n#endif\n'):
self.addDefine('HAVE_SANITIZER', '1')
elif self.checkLink('#if !defined(__SANITIZE_ADDRESS__)\nGarbage\n#endif\n'):
self.addDefine('HAVE_SANITIZER', '1')

def configureUnused(self):
'''Sees if __attribute((unused)) is supported'''
Expand Down
27 changes: 13 additions & 14 deletions config/configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def check_for_option_mistakes(opts):

def check_for_unsupported_combinations(opts):
if '--with-precision=single' in opts and '--with-clanguage=cxx' in opts and '--with-scalar-type=complex' in opts:
sys.exit(ValueError('PETSc does not support single precision complex with C++ clanguage, run with --with-clanguage=c'))
raise ValueError('PETSc does not support single precision complex with C++ clanguage, run with --with-clanguage=c')

def check_for_option_changed(opts):
# Document changes in command line options here. (matlab-engine is deprecated, no longer needed but still allowed)
Expand Down Expand Up @@ -97,10 +97,10 @@ def chkenable():
for l in range(0,len(sys.argv)):
name = sys.argv[l]
if name.find(no_break_space) >= 0:
sys.exit(ValueError('Unicode NO-BREAK SPACE char found in arguments! Please rerun configure using regular space chars: %s' % [name]))
raise ValueError('Unicode NO-BREAK SPACE char found in arguments! Please rerun configure using regular space chars: %s' % [name])
name = name.replace(en_dash,'-')
if hasattr(name,'isprintable') and not name.isprintable():
sys.exit(ValueError('Non-printable characters or control characters found in arguments! Please rerun configure using only printable character arguments: %s' % [name]))
raise ValueError('Non-printable characters or control characters found in arguments! Please rerun configure using only printable character arguments: %s' % [name])
if name.lstrip('-').startswith('enable-cxx'):
if name.find('=') == -1:
name = name.replace('enable-cxx','with-clanguage=C++',1)
Expand Down Expand Up @@ -180,7 +180,7 @@ def chksynonyms():
elif int(tail)==64:
name = '--with-64-bit-indices=1'
else:
raise RuntimeError('--with-index-size= must be 32 or 64')
raise ValueError('--with-index-size= must be 32 or 64')

if name.find('with-precision=') >=0:
head,tail = name.split('=',1)
Expand Down Expand Up @@ -416,19 +416,18 @@ def petsc_configure(configure_options):
sys.argv = sys.argv[:1] + configure_options + sys.argv[1:]
check_for_option_mistakes(sys.argv)
check_for_option_changed(sys.argv)
check_for_unsupported_combinations(sys.argv)

check_petsc_arch(sys.argv)
check_broken_configure_log_links()

#rename '--enable-' to '--with-'
chkenable()
# support a few standard configure option types
chksynonyms()
except (TypeError, ValueError) as e:
msg = logger.build_multiline_error_message('ERROR in COMMAND LINE ARGUMENT to ./configure', str(e))
sys.exit(msg)
# check PETSC_ARCH
check_for_unsupported_combinations(sys.argv)
check_petsc_arch(sys.argv)
check_broken_configure_log_links()

#rename '--enable-' to '--with-'
chkenable()
# support a few standard configure option types
chksynonyms()
# Check for broken cygwin
chkbrokencygwin()
# Disable threads on RHL9
chkrhl9()
Expand Down
2 changes: 1 addition & 1 deletion config/examples/arch-alcf-polaris.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# Note cray-libsci provides BLAS etc. In summary, we have
# module use /soft/modulefiles
# module unload darshan
# module load cudatoolkit-standalone/12.4.1 PrgEnv-gnu cray-libsci nvhpc-mixed craype-accel-nvidia80
# module load PrgEnv-gnu cray-libsci nvhpc-mixed craype-accel-nvidia80 cudatoolkit-standalone/12.4.1
# export MPICH_GPU_SUPPORT_ENABLED=1
# export MPICH_GPU_IPC_ENABLED=0
#
Expand Down
39 changes: 39 additions & 0 deletions config/examples/arch-ci-linux-hip-cmplx.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/usr/bin/env python3

import os
petsc_hash_pkgs=os.path.join(os.getenv('HOME'),'petsc-hash-pkgs')

if __name__ == '__main__':
import sys
import os
sys.path.insert(0, os.path.abspath('config'))
import configure
configure_options = [
'--package-prefix-hash='+petsc_hash_pkgs,
#'--with-mpi-dir=/home/users/balay/soft/instinct/gcc-10.2.0/mpich-4.1',
#'--with-blaslapack-dir=/home/users/balay/soft/instinct/gcc-10.2.0/fblaslapack',
'--with-make-np=24',
'--with-make-test-np=8',
'--with-hipc=/opt/rocm-5.4.3/bin/hipcc',
'--with-hip-dir=/opt/rocm-5.4.3',
'COPTFLAGS=-g -O',
'FOPTFLAGS=-g -O',
'CXXOPTFLAGS=-g -O',
'HIPOPTFLAGS=-g -O',
'--with-cuda=0',
'--with-hip=1',
'--with-precision=double',
'--with-clanguage=c',
'--download-kokkos',
'--download-kokkos-kernels',
# '--download-hypre', # does not support complex on the GPU yet
# '--download-mfem', # requires hypre
'--download-magma',
'--with-magma-fortran-bindings=0',
'--download-metis',
'--with-strict-petscerrorcode',
'--with-scalar-type=complex',
#'--with-coverage',
]

configure.petsc_configure(configure_options)
50 changes: 50 additions & 0 deletions doc/community/meetings/2024/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
:orphan:

.. _2024_meeting:


2024 Annual PETSc Meeting
*************************

Cologne, Germany; May 23-24, 2024

`Original meeting website <https://cds.uni-koeln.de/en/workshops/petsc-2024/home>`__

.. image:: https://petsc.gitlab.io/annual-meetings/2024/GroupPhoto.jpg
:width: 800
:alt: PETSc User Meeting 2024 group photo

Scientific committee:
- Dr. Pierre Jolivet Sorbonne Université, CNRS

- Prof. Dr. Axel Klawonn University of Cologne

- Prof. Dr. Matthew Knepley University at Buffalo

- Dr. Martin Lanser University of Cologne

- Prof. Dr. Oliver Rheinbach TU Bergakademie Freiberg

- Dr. Janine Weber University of Cologne

- Dr. Stefano Zampini King Abdullah University of Science and Technology

Local Organizing Committee
- Prof. Dr. Axel Klawonn

- Dr. Jascha Knepper

- Dr. Martin Lanser

- Dr. Janine Weber

.. image:: https://petsc.gitlab.io/annual-meetings/2024/banner_PETSc_2024.jpg
:width: 800

.. image:: https://petsc.gitlab.io/annual-meetings/2024/csm_PETSc_2024_Schedule_Overview.jpg
:width: 800


- `Abstracts <https://petsc.gitlab.io/annual-meetings/2024/PETSc_2024_Book_of_Abstracts.pdf>`__

- `Detailed schedule <https://petsc.gitlab.io/annual-meetings/2024/PETSc_2024_Schedule.pdf>`__
15 changes: 8 additions & 7 deletions doc/community/meetings/meeting.rst
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
.. _meetings:

*********************
Annual PETSc Meetings
*********************
*********************************
PETSc Annual User Meetings (PAUM)
*********************************

The PETSc community hosts an annual PETSc-users conference in order to foster
The PETSc community hosts annual user meetings in order to foster
continuous dialogue with our community. These yearly meetings allow us to (among other
things):

Expand All @@ -17,7 +17,7 @@ things):
developers and designers of simulation packages that use PETSc.
- Receive valuable feedback on current or requested features.

PETSc user meetings rely on two-way communication: PETSc developers provide insights into
PETSc annual user meetings rely on two-way communication: PETSc developers provide insights into
the latest developments, whereas PETSc users provide input on both technical and
non-technical matters, hence aligning development with user needs. In particular, we
encourage you to present work illustrating your own use of PETSc. We also invite you to
Expand All @@ -28,12 +28,13 @@ simulations by scientists and engineers.
Upcoming Meetings
=================

- The 2025 user meeting will take place in Buffalo, New York, USA.
- The PETSc Annual User Meeting (PAUM) 2025 will take place in Buffalo, New York, USA on May 19-21, 2025.
- `Submit a presentation or poster <https://docs.google.com/forms/d/126KwzajoQvcqU_q7btNsYxFqbe7rJ_vASC-tejZfXDQ>`__

Previous Meetings
=================

- `Cologne, Germany; May 23-24, 2024 <https://cds.uni-koeln.de/en/workshops/petsc-2024/home>`__
- :any:`Cologne, Germany; May 23-24, 2024 <2024_meeting>`
- :any:`Chicago, Illinois, USA; June 5-7, 2023 <2023_meeting>`
- `Atlanta, Georgia, USA; June 5-7, 2019 <https://petsc.gitlab.io/annual-meetings/2019/index.html>`__
- `London, UK; June 4-6, 2018 <https://petsc.gitlab.io/annual-meetings/2018/index.html>`__
Expand Down
Loading

0 comments on commit ebc0e51

Please sign in to comment.