From 2ae72305882e11e175c26aa23e1154718996bbcc Mon Sep 17 00:00:00 2001 From: EXT GRIMA Nicolas <nicolas.grima@univ-pau.fr> Date: Thu, 18 Jul 2024 10:53:56 +0200 Subject: [PATCH] Rename docker images (during this work a bug in sympy 1.13.0 and hysop was solved by download sympy version to 1.12.1 and adding sm.Rational(f2q()) to coef.) --- .gitlab-ci.yml | 176 +++++-------- ci/ci-templates.yml | 4 - .../Dockerfile | 3 +- .../Dockerfile | 0 .../Dockerfile | 3 +- .../Dockerfile | 4 +- .../Dockerfile | 4 +- .../Dockerfile | 4 +- .../Dockerfile | 2 +- .../Dockerfile | 2 +- .../Dockerfile | 2 +- .../ubuntu_jammy_cmake/Dockerfile | 248 ------------------ ci/docker_images/ubuntu_jammy_lite/Dockerfile | 79 ------ ci/utils/build_docker_image.bat | 2 +- ci/utils/build_docker_image.sh | 2 +- ci/utils/pull_docker_image.bat | 2 +- ci/utils/pull_docker_image.sh | 2 +- ci/utils/push_docker_image.bat | 2 +- ci/utils/push_docker_image.sh | 2 +- ci/utils/run_ci.bat | 2 +- ci/utils/run_ci.sh | 2 +- ci/utils/run_debug.bat | 2 +- ci/utils/run_debug.sh | 2 +- ci/utils/run_docker_image.bat | 2 +- ci/utils/run_docker_image.sh | 2 +- ci/utils/run_user_docker_image.sh | 2 +- hysop/numerics/remesh/kernel_generator.py | 21 +- 27 files changed, 108 insertions(+), 470 deletions(-) rename ci/docker_images/{ubuntu_jammy_meson => ci_cpu_intel}/Dockerfile (99%) rename ci/docker_images/{mamba => ci_cpu_intel_mamba_dev}/Dockerfile (100%) rename ci/docker_images/{ubuntu_jammy_nvidia => ci_gpu_nvidia}/Dockerfile (98%) rename ci/docker_images/{hysop_jammy => hysop_cpu_intel}/Dockerfile (77%) rename ci/docker_images/{hysop_mamba => hysop_cpu_intel_mamba_dev}/Dockerfile (77%) rename ci/docker_images/{hysop_nvidia => hysop_gpu_nvidia}/Dockerfile (76%) rename ci/docker_images/{hysop_user_mamba => hysop_user_cpu_intel}/Dockerfile (94%) rename ci/docker_images/{hysop_user_jammy => hysop_user_cpu_intel_mamba_dev}/Dockerfile (93%) rename ci/docker_images/{hysop_user_nvidia => hysop_user_gpu_nvidia}/Dockerfile (94%) delete mode 100644 ci/docker_images/ubuntu_jammy_cmake/Dockerfile delete mode 100644 ci/docker_images/ubuntu_jammy_lite/Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e58374980..2de61e39a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -33,230 +33,196 @@ include: # - if: $CI_COMMIT_MESSAGE =~ /\[docker-build-jammy-lite\]/ # when: always -ubuntu:jammy-meson:docker-build: +ubuntu:cpu-intel:docker-build: variables: - DOCKERFILE_PATH: ubuntu_jammy_meson - IMAGE_NAME: ubuntu_jammy_meson + DOCKERFILE_PATH: ci_cpu_intel + IMAGE_NAME: ci_cpu_intel extends: .docker-build tags: - lmap - cpu rules: - - if: $CI_COMMIT_MESSAGE =~ /\[docker-build-jammy-meson\]/ || $CI_COMMIT_MESSAGE =~ /\[docker-build-all\]/ + - if: $CI_COMMIT_MESSAGE =~ /\[docker-build-cpu-intel\]/ || $CI_COMMIT_MESSAGE =~ /\[docker-build-all\]/ when: always -ubuntu:nvidia-meson:docker-build: +ubuntu:gpu-nvidia:docker-build: variables: - DOCKERFILE_PATH: ubuntu_jammy_nvidia - IMAGE_NAME: ubuntu_jammy_nvidia + DOCKERFILE_PATH: ci_gpu_nvidia + IMAGE_NAME: ci_gpu_nvidia extends: .docker-build tags: - lmap - cpu rules: - - if: $CI_COMMIT_MESSAGE =~ /\[docker-build-nvidia\]/ || $CI_COMMIT_MESSAGE =~ /\[docker-build-all\]/ + - if: $CI_COMMIT_MESSAGE =~ /\[docker-build-gpu-nvidia\]/ || $CI_COMMIT_MESSAGE =~ /\[docker-build-all\]/ when: always -mamba-meson:docker-build: +cpu-mamba:docker-build: variables: - DOCKERFILE_PATH: mamba - IMAGE_NAME: mamba + DOCKERFILE_PATH: ci_cpu_intel_mamba_dev + IMAGE_NAME: ci_cpu_intel_mamba_dev extends: .docker-build tags: - lmap - cpu rules: - - if: $CI_COMMIT_MESSAGE =~ /\[docker-build-mamba\]/ || $CI_COMMIT_MESSAGE =~ /\[docker-build-all\]/ + - if: $CI_COMMIT_MESSAGE =~ /\[docker-build-cpu-mamba\]/ || $CI_COMMIT_MESSAGE =~ /\[docker-build-all\]/ when: always ## -- hysop jobs -- -### Lite env (minimal setup: no opencl, no fortran ...) +### Standard, CPU Intel -# config:jammy_lite: -# variables: -# IMAGE_NAME: $HYSOP_REGISTRY/ubuntu_jammy_lite:latest -# CONF_FILE: $HYSOP_CONFIG_PATH/minimal.cmake -# extends: .hysop-configure -# -# build:jammy_lite: -# variables: -# IMAGE_NAME: $HYSOP_REGISTRY/ubuntu_jammy_lite:latest -# needs: ["config:jammy_lite"] -# extends: .hysop-build -# -# install:jammy_lite: -# variables: -# IMAGE_NAME: $HYSOP_REGISTRY/ubuntu_jammy_lite:latest -# needs: ["build:jammy_lite"] -# extends: .hysop-install -# -# test:jammy_lite: -# variables: -# IMAGE_NAME: $HYSOP_REGISTRY/ubuntu_jammy_lite:latest -# needs: ["install:jammy_lite"] -# extends: .hysop-test - - -# NG: nov and dec 2023, some examples are based on OpenCL! -# examples:jammy_lite: -# variables: -# IMAGE_NAME: $HYSOP_REGISTRY/ubuntu_jammy_lite:latest -# needs: ["install:jammy_lite"] -# extends: .hysop-examples - -### Standard, ubuntu - -config:jammy-meson: +config:ci-cpu-intel: variables: - IMAGE_NAME: $HYSOP_REGISTRY/ubuntu_jammy_meson:latest + IMAGE_NAME: $HYSOP_REGISTRY/ci_cpu_intel:latest extends: - .hysop-configure - .lmap-cpu -build:jammy-meson: +build:ci-cpu-intel: variables: - IMAGE_NAME: $HYSOP_REGISTRY/ubuntu_jammy_meson:latest - needs: ["config:jammy-meson"] + IMAGE_NAME: $HYSOP_REGISTRY/ci_cpu_intel:latest + needs: ["config:ci-cpu-intel"] extends: - .hysop-build - .lmap-cpu -install:jammy-meson: +install:ci-cpu-intel: variables: - IMAGE_NAME: $HYSOP_REGISTRY/ubuntu_jammy_meson:latest - needs: ["build:jammy-meson"] + IMAGE_NAME: $HYSOP_REGISTRY/ci_cpu_intel:latest + needs: ["build:ci-cpu-intel"] extends: - .hysop-install - .lmap-cpu -test:jammy-meson: +test:ci-cpu-intel: variables: - IMAGE_NAME: $HYSOP_REGISTRY/ubuntu_jammy_meson:latest - needs: ["install:jammy-meson"] + IMAGE_NAME: $HYSOP_REGISTRY/ci_cpu_intel:latest + needs: ["install:ci-cpu-intel"] extends: - .hysop-test - .lmap-cpu -examples:jammy_meson: +examples:ci-cpu-intel: variables: - IMAGE_NAME: $HYSOP_REGISTRY/ubuntu_jammy_meson:latest - needs: ["install:jammy-meson"] + IMAGE_NAME: $HYSOP_REGISTRY/ci_cpu_intel:latest + needs: ["install:ci-cpu-intel"] extends: - .hysop-examples - .lmap-cpu -docker:hysop:jammy: +docker:hysop:cpu-intel: variables: - DOCKERFILE_PATH: hysop_jammy - HYSOP_DOCKER_TARGET: hysop_jammy - IMAGE_NAME: hysop_jammy + DOCKERFILE_PATH: hysop_cpu_intel + HYSOP_DOCKER_TARGET: hysop_cpu_intel + IMAGE_NAME: hysop_cpu_intel extends: - .hysop-docker-hysop - .lmap-cpu - needs: ["build:jammy-meson", "test:jammy-meson"] + needs: ["build:ci-cpu-intel", "test:ci-cpu-intel"] -### Mamba - standard setup without gpus +### Mamba - DEV - CPU Intel -config:mamba-meson: +config:ci-cpu-mamba: variables: - IMAGE_NAME: $HYSOP_REGISTRY/mamba:latest + IMAGE_NAME: $HYSOP_REGISTRY/ci_cpu_intel_mamba_dev:latest extends: - .hysop-configure - .lmap-cpu -build:mamba-meson: +build:ci-cpu-mamba: variables: - IMAGE_NAME: $HYSOP_REGISTRY/mamba:latest - needs: ["config:mamba-meson"] + IMAGE_NAME: $HYSOP_REGISTRY/ci_cpu_intel_mamba_dev:latest + needs: ["config:ci-cpu-mamba"] extends: - .hysop-build - .lmap-cpu -install:mamba-meson: +install:ci-cpu-mamba: variables: - IMAGE_NAME: $HYSOP_REGISTRY/mamba:latest - needs: ["build:mamba-meson"] + IMAGE_NAME: $HYSOP_REGISTRY/ci_cpu_intel_mamba_dev:latest + needs: ["build:ci-cpu-mamba"] extends: - .hysop-install - .lmap-cpu -test:mamba-meson: +test:ci-cpu-mamba: variables: - IMAGE_NAME: $HYSOP_REGISTRY/mamba:latest - needs: ["install:mamba-meson"] + IMAGE_NAME: $HYSOP_REGISTRY/ci_cpu_intel_mamba_dev:latest + needs: ["install:ci-cpu-mamba"] extends: - .hysop-test - .lmap-cpu -examples:mamba-meson: +examples:ci-cpu-mamba: variables: - IMAGE_NAME: $HYSOP_REGISTRY/mamba:latest - needs: ["install:mamba-meson"] + IMAGE_NAME: $HYSOP_REGISTRY/ci_cpu_intel_mamba_dev:latest + needs: ["install:ci-cpu-mamba"] extends: - .hysop-examples - .lmap-cpu -docker:hysop:mamba: +docker:hysop:cpu-mamba: variables: - DOCKERFILE_PATH: hysop_mamba - HYSOP_DOCKER_TARGET: hysop_mamba - IMAGE_NAME: hysop_mamba + DOCKERFILE_PATH: hysop_cpu_intel_mamba_dev + HYSOP_DOCKER_TARGET: hysop_cpu_intel_mamba_dev + IMAGE_NAME: hysop_cpu_intel_mamba_dev extends: - .hysop-docker-hysop - .lmap-cpu - needs: ["build:mamba-meson", "test:mamba-meson"] + needs: ["build:ci-cpu-mamba", "test:ci-cpu-mamba"] ### Ubuntu, with Nvidia GPUs -config:nvidia-meson: +config:ci-gpu-nvidia: variables: - IMAGE_NAME: $HYSOP_REGISTRY/ubuntu_jammy_nvidia:latest + IMAGE_NAME: $HYSOP_REGISTRY/ci_gpu_nvidia:latest extends: - .hysop-configure - .hysop-gpu -build:nvidia-meson: +build:ci-gpu-nvidia: variables: - IMAGE_NAME: $HYSOP_REGISTRY/ubuntu_jammy_nvidia:latest - needs: ["config:nvidia-meson"] + IMAGE_NAME: $HYSOP_REGISTRY/ci_gpu_nvidia:latest + needs: ["config:ci-gpu-nvidia"] extends: - .hysop-build - .hysop-gpu -install:nvidia-meson: +install:ci-gpu-nvidia: variables: - IMAGE_NAME: $HYSOP_REGISTRY/ubuntu_jammy_nvidia:latest - needs: ["build:nvidia-meson"] + IMAGE_NAME: $HYSOP_REGISTRY/ci_gpu_nvidia:latest + needs: ["build:ci-gpu-nvidia"] extends: - .hysop-install - .hysop-gpu -test:nvidia-meson: +test:ci-gpu-nvidia: variables: - IMAGE_NAME: $HYSOP_REGISTRY/ubuntu_jammy_nvidia:latest - needs: ["install:nvidia-meson"] + IMAGE_NAME: $HYSOP_REGISTRY/ci_gpu_nvidia:latest + needs: ["install:ci-gpu-nvidia"] extends: - .hysop-test - .hysop-gpu -examples:nvidia-meson: +examples:ci-gpu-nvidia: variables: - IMAGE_NAME: $HYSOP_REGISTRY/ubuntu_jammy_nvidia:latest - needs: ["install:nvidia-meson"] + IMAGE_NAME: $HYSOP_REGISTRY/ci_gpu_nvidia:latest + needs: ["install:ci-gpu-nvidia"] extends: - .hysop-examples - .hysop-gpu -docker:hysop:nvidia: +docker:hysop:gpu-nvidia: variables: - DOCKERFILE_PATH: hysop_nvidia - HYSOP_DOCKER_TARGET: hysop_nvidia - IMAGE_NAME: hysop_nvidia + DOCKERFILE_PATH: hysop_gpu_nvidia + HYSOP_DOCKER_TARGET: hysop_gpu_nvidia + IMAGE_NAME: hysop_gpu_nvidia extends: - .hysop-docker-hysop - .lmap-cpu - needs: ["build:nvidia-meson", "test:nvidia-meson"] + needs: ["build:ci-gpu-nvidia", "test:ci-gpu-nvidia"] # Trigger the CI of hysop-doc project to re-build online documentation (user+generated) onlinedocupdate: diff --git a/ci/ci-templates.yml b/ci/ci-templates.yml index e1fea5d6b..882f14022 100644 --- a/ci/ci-templates.yml +++ b/ci/ci-templates.yml @@ -70,11 +70,9 @@ stages: # https://gricad-gitlab.univ-grenoble-alpes.fr/particle_methods/hysop/container_registry - doc - # --- Templates definitions --- # Each template can be used in CI jobs, with the keyword 'extends'. - # ============ RULES ============ .docker-rules: @@ -105,7 +103,6 @@ stages: when: always - when: never - # ============ Docker image builds ============ # -- Template used to describe docker-build jobs -- @@ -153,7 +150,6 @@ workflow: - if: $CI_COMMIT_TAG - if: $CI_COMMIT_BRANCH # If a branch is updated -> delegates specific behavior control to the jobs - # ============ Hysop conf, build and tests ============ .hysop-ctest: diff --git a/ci/docker_images/ubuntu_jammy_meson/Dockerfile b/ci/docker_images/ci_cpu_intel/Dockerfile similarity index 99% rename from ci/docker_images/ubuntu_jammy_meson/Dockerfile rename to ci/docker_images/ci_cpu_intel/Dockerfile index 9c9729c6f..2ff6278ff 100644 --- a/ci/docker_images/ubuntu_jammy_meson/Dockerfile +++ b/ci/docker_images/ci_cpu_intel/Dockerfile @@ -112,7 +112,8 @@ RUN pip install --upgrade \ cffi pytest \ pybind11 pkgconfig \ build \ - scipy sympy matplotlib==3.8.2 gmpy2 psutil py-cpuinfo \ + scipy sympy==1.12.1 matplotlib==3.8.2 \ + gmpy2 psutil py-cpuinfo \ Mako editdistance portalocker colors.py tee \ pycairo argparse_color_formatter networkx pyvis \ zarr numcodecs jsonpickle memory-tempfile \ diff --git a/ci/docker_images/mamba/Dockerfile b/ci/docker_images/ci_cpu_intel_mamba_dev/Dockerfile similarity index 100% rename from ci/docker_images/mamba/Dockerfile rename to ci/docker_images/ci_cpu_intel_mamba_dev/Dockerfile diff --git a/ci/docker_images/ubuntu_jammy_nvidia/Dockerfile b/ci/docker_images/ci_gpu_nvidia/Dockerfile similarity index 98% rename from ci/docker_images/ubuntu_jammy_nvidia/Dockerfile rename to ci/docker_images/ci_gpu_nvidia/Dockerfile index 275cc6f50..41166959b 100644 --- a/ci/docker_images/ubuntu_jammy_nvidia/Dockerfile +++ b/ci/docker_images/ci_gpu_nvidia/Dockerfile @@ -129,7 +129,8 @@ RUN ${PYTHON_EXECUTABLE} -m pip install --upgrade \ cffi pytest \ pybind11 pkgconfig \ build \ - scipy sympy matplotlib==3.8.2 gmpy2 psutil py-cpuinfo \ + scipy sympy==1.12.1 matplotlib==3.8.2 \ + gmpy2 psutil py-cpuinfo \ Mako editdistance portalocker colors.py tee \ pycairo argparse_color_formatter networkx pyvis \ zarr numcodecs jsonpickle memory-tempfile \ diff --git a/ci/docker_images/hysop_jammy/Dockerfile b/ci/docker_images/hysop_cpu_intel/Dockerfile similarity index 77% rename from ci/docker_images/hysop_jammy/Dockerfile rename to ci/docker_images/hysop_cpu_intel/Dockerfile index 8ae9b7afb..086f94018 100644 --- a/ci/docker_images/hysop_jammy/Dockerfile +++ b/ci/docker_images/hysop_cpu_intel/Dockerfile @@ -1,9 +1,9 @@ ARG REGISTRY=gricad-registry.univ-grenoble-alpes.fr ARG PROJECT=particle_methods/hysop -ARG DEFAULT_IMAGE=ubuntu_jammy_meson +ARG DEFAULT_IMAGE=ci_cpu_intel ARG IMAGENAME=$REGISTRY/$PROJECT/$DEFAULT_IMAGE -FROM $IMAGENAME AS hysop_jammy +FROM $IMAGENAME AS hysop_cpu_intel # TODO: generic path to hysop! RUN cd /builds/particle_methods/hysop && \ diff --git a/ci/docker_images/hysop_mamba/Dockerfile b/ci/docker_images/hysop_cpu_intel_mamba_dev/Dockerfile similarity index 77% rename from ci/docker_images/hysop_mamba/Dockerfile rename to ci/docker_images/hysop_cpu_intel_mamba_dev/Dockerfile index 6445413c0..d796f3a34 100644 --- a/ci/docker_images/hysop_mamba/Dockerfile +++ b/ci/docker_images/hysop_cpu_intel_mamba_dev/Dockerfile @@ -1,9 +1,9 @@ ARG REGISTRY=gricad-registry.univ-grenoble-alpes.fr ARG PROJECT=particle_methods/hysop -ARG DEFAULT_IMAGE=mamba +ARG DEFAULT_IMAGE=ci_cpu_intel_mamba_dev ARG IMAGENAME=$REGISTRY/$PROJECT/$DEFAULT_IMAGE -FROM $IMAGENAME AS hysop_mamba +FROM $IMAGENAME AS hysop_cpu_intel_mamba_dev ARG MAMBA_DOCKERFILE_ACTIVATE=1 # (otherwise meson will not be found) diff --git a/ci/docker_images/hysop_nvidia/Dockerfile b/ci/docker_images/hysop_gpu_nvidia/Dockerfile similarity index 76% rename from ci/docker_images/hysop_nvidia/Dockerfile rename to ci/docker_images/hysop_gpu_nvidia/Dockerfile index 3b2218602..ed0ef43c9 100644 --- a/ci/docker_images/hysop_nvidia/Dockerfile +++ b/ci/docker_images/hysop_gpu_nvidia/Dockerfile @@ -1,9 +1,9 @@ ARG REGISTRY=gricad-registry.univ-grenoble-alpes.fr ARG PROJECT=particle_methods/hysop -ARG DEFAULT_IMAGE=ubuntu_jammy_nvidia +ARG DEFAULT_IMAGE=ci_gpu_nvidia ARG IMAGENAME=$REGISTRY/$PROJECT/$DEFAULT_IMAGE -FROM $IMAGENAME AS hysop_nvidia +FROM $IMAGENAME AS hysop_gpu_nvidia # TODO: generic path to hysop! RUN cd /builds/particle_methods/hysop && \ diff --git a/ci/docker_images/hysop_user_mamba/Dockerfile b/ci/docker_images/hysop_user_cpu_intel/Dockerfile similarity index 94% rename from ci/docker_images/hysop_user_mamba/Dockerfile rename to ci/docker_images/hysop_user_cpu_intel/Dockerfile index a817dafa8..d15777c80 100644 --- a/ci/docker_images/hysop_user_mamba/Dockerfile +++ b/ci/docker_images/hysop_user_cpu_intel/Dockerfile @@ -1,6 +1,6 @@ ARG REGISTRY=gricad-registry.univ-grenoble-alpes.fr ARG PROJECT=particle_methods/hysop -ARG DEFAULT_IMAGE=hysop_mamba +ARG DEFAULT_IMAGE=hysop_cpu_intel ARG IMAGENAME=$REGISTRY/$PROJECT/$DEFAULT_IMAGE FROM $IMAGENAME diff --git a/ci/docker_images/hysop_user_jammy/Dockerfile b/ci/docker_images/hysop_user_cpu_intel_mamba_dev/Dockerfile similarity index 93% rename from ci/docker_images/hysop_user_jammy/Dockerfile rename to ci/docker_images/hysop_user_cpu_intel_mamba_dev/Dockerfile index f0d10596b..7a84c91b9 100644 --- a/ci/docker_images/hysop_user_jammy/Dockerfile +++ b/ci/docker_images/hysop_user_cpu_intel_mamba_dev/Dockerfile @@ -1,6 +1,6 @@ ARG REGISTRY=gricad-registry.univ-grenoble-alpes.fr ARG PROJECT=particle_methods/hysop -ARG DEFAULT_IMAGE=hysop_jammy +ARG DEFAULT_IMAGE=hysop_cpu_intel_mamba_dev ARG IMAGENAME=$REGISTRY/$PROJECT/$DEFAULT_IMAGE FROM $IMAGENAME diff --git a/ci/docker_images/hysop_user_nvidia/Dockerfile b/ci/docker_images/hysop_user_gpu_nvidia/Dockerfile similarity index 94% rename from ci/docker_images/hysop_user_nvidia/Dockerfile rename to ci/docker_images/hysop_user_gpu_nvidia/Dockerfile index bc82ddda7..0620dc8de 100644 --- a/ci/docker_images/hysop_user_nvidia/Dockerfile +++ b/ci/docker_images/hysop_user_gpu_nvidia/Dockerfile @@ -1,6 +1,6 @@ ARG REGISTRY=gricad-registry.univ-grenoble-alpes.fr ARG PROJECT=particle_methods/hysop -ARG DEFAULT_IMAGE=hysop_nvidia +ARG DEFAULT_IMAGE=hysop_gpu_nvidia ARG IMAGENAME=$REGISTRY/$PROJECT/$DEFAULT_IMAGE FROM $IMAGENAME diff --git a/ci/docker_images/ubuntu_jammy_cmake/Dockerfile b/ci/docker_images/ubuntu_jammy_cmake/Dockerfile deleted file mode 100644 index 3bb5806de..000000000 --- a/ci/docker_images/ubuntu_jammy_cmake/Dockerfile +++ /dev/null @@ -1,248 +0,0 @@ -/## -## Copyright (c) HySoP 2011-2024 -## -## This file is part of HySoP software. -## See "https://particle_methods.gricad-pages.univ-grenoble-alpes.fr/hysop-doc/" -## for further info. -## -## Licensed under the Apache License, Version 2.0 (the "License"); -## you may not use this file except in compliance with the License. -## You may obtain a copy of the License at -## -## http://www.apache.org/licenses/LICENSE-2.0 -## -## Unless required by applicable law or agreed to in writing, software -## distributed under the License is distributed on an "AS IS" BASIS, -## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -## See the License for the specific language governing permissions and -## limitations under the License. -## - -# Docker muti-stage builds or buildkit (parallel stages) -# https://docs.docker.com/build/building/multi-stage/ -# -FROM ubuntu:jammy AS ubuntu_jammy -LABEL authors="Jean-Baptiste.Keck@imag.fr, Nicolas.Grima@univ-pau.fr" - -# parallel builds -ARG NTHREADS -ENV MAKEFLAGS "-j${NTHREADS}" -ENV PYTHON_EXECUTABLE=python3.10 - -# -ENV DEBIAN_FRONTEND noninteractive - -RUN apt-get update && apt-get full-upgrade -y && \ - apt-get install -y --no-install-recommends \ - expat unzip xz-utils pkg-config cmake rsync git ssh curl wget \ - ca-certificates gcc g++ lsb-core cpio libnuma1 libpciaccess0 \ - libreadline-dev libgcc-11-dev libcairo-dev libcairomm-1.0-dev \ - ${PYTHON_EXECUTABLE}-dev openmpi-bin libopenmpi-dev python3-pip \ - automake libtool gfortran libblas-dev liblapack-dev \ - libgfortran-11-dev libgmp-dev libmpfr-dev libmpc-dev \ - libclfft-dev clpeak clinfo graphviz doxygen && \ - apt autoclean -y && \ - apt autoremove -y - -RUN pip install --upgrade setuptools==68.2.2 - -######## -# HPTT # -######## -FROM ubuntu_jammy AS hptt - -RUN cd /tmp && \ - git clone https://gitlab.com/keckj/hptt.git && \ - cd hptt && \ - sed -i "s#-mavx##g" CMakeLists.txt && \ - sed -i "s#-march=native##g" CMakeLists.txt && \ - sed -i "s#-mtune=native##g" CMakeLists.txt && \ - mkdir build && \ - cd build && \ - cmake -DCMAKE_BUILD_TYPE=Release .. && \ - make && \ - make install && \ - cd ../pythonAPI && \ - ${PYTHON_EXECUTABLE} -m pip install --upgrade . && \ - cd /tmp && \ - rm -rf /tmp/hptt - -######### -# FLINT # -######### -FROM ubuntu_jammy AS flint - -# -# python flint (FLINT2 + ARB + python-flint) -# -# flint 3.0.1 version is the last version (16 nov 2023) -# (now ARB has been merged into flint 3) -# -RUN cd /tmp && \ - wget -q https://github.com/flintlib/flint/archive/refs/tags/v3.0.1.tar.gz && \ - tar -xzf v*.tar.gz && \ - rm -f v*.tar.gz && \ - cd flint* && \ - mkdir build && \ - cd build/ && \ - cmake .. -DBUILD_SHARED_LIBS=ON && \ - make && \ - make install && \ - cd /tmp && \ - rm -rf /tmp/flint* - -############## -# MAIN STAGE # -############## -FROM ubuntu_jammy AS main_stage - -# NG setuptools upgrade 69 20 nov 2023 = deprecations and removals -# NG https://stackoverflow.com/questions/77523055/missingdynamic-license-defined-outside-of-pyproject-toml-is-ignored -RUN ${PYTHON_EXECUTABLE} -m pip install --upgrade \ - numpy==1.26.3 cffi wheel pytest \ - pybind11 cython==0.29.32 pkgconfig mpi4py build virtualenv \ - scipy sympy matplotlib gmpy2 psutil py-cpuinfo \ - Mako editdistance portalocker colors.py tee \ - pycairo argparse_color_formatter networkx pyvis \ - zarr numcodecs jsonpickle memory-tempfile \ - primefac pyfftw numba llvmlite python-flint \ - sphinx sphinxcontrib-bibtex sphinxcontrib-doxylink \ - sphinx_bootstrap_theme sphinx-rtd-theme strip-hints \ - tox ansicolors pyopencl \ - meson meson-python ninja - -ENV MPICC "mpicc" -ENV FC "mpif90" -RUN cd /tmp && \ - wget -q https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.14/hdf5-1.14.3/src/hdf5-1.14.3.tar.gz && \ - tar -xzf hdf5-*.tar.gz && \ - rm -f hdf5-*.tar.gz && \ - cd hdf5-* && \ - CC="${MPICC}" ./configure --prefix=/usr/local --enable-parallel \ - --enable-shared=yes --enable-static=no && \ - make && \ - make install && \ - cd /tmp && \ - rm -rf /tmp/hdf5-* && \ - CC="${MPICC}" HDF5_MPI="ON" HDF5_VERSION="1.14.3" \ - HDF5_DIR=/usr/local H5PY_SETUP_REQUIRES=0 \ - ${PYTHON_EXECUTABLE} -m pip install \ - --upgrade --no-binary=h5py --no-deps --no-build-isolation \ - h5py==3.10.0 - -# -# gpyFFT -# https://github.com/geggo/gpyfft -# latest release version 0.7.0 Feb 1 2017 -# using git clone -> version 0.7.3 -# -# !!! test-fft failed !!! -# $ sudo apt search gpyfft (ubuntu 22.04 LTS, jammy) -# python3-gpyfft/focal 0.7.0-2build1 amd64 -# -RUN cd /tmp && \ - git clone https://github.com/geggo/gpyfft.git && \ - cd gpyfft && \ - sed 's#finalize(self, _destroy_plan, self.plan)##' -i gpyfft/gpyfftlib.pyx && \ - ${PYTHON_EXECUTABLE} -m pip install . && \ - cd - && \ - rm -rf /tmp/gpyfft - -# -# FFTW latest version nov 2023 -# Compilation is necessary because there is no mpi version -# with the float precisions requested by hysop (single, double, long) -# -ENV FFTW_ROOT="/usr/local" -RUN cd /tmp && \ - wget -q http://www.fftw.org/fftw-3.3.10.tar.gz && \ - tar -xzf fftw-*.tar.gz && \ - rm -f fftw-*.tar.gz && \ - cd fftw-* && \ - ./configure --enable-openmp --enable-threads --enable-mpi --enable-shared --with-pic --prefix="${FFTW_ROOT}" --enable-single && \ - make && make install && make clean && \ - ./configure --enable-openmp --enable-threads --enable-mpi --enable-shared --with-pic --prefix="${FFTW_ROOT}" && \ - make && make install && make clean && \ - ./configure --enable-openmp --enable-threads --enable-mpi --enable-shared --with-pic --prefix="${FFTW_ROOT}" --enable-long-double && \ - make && make install && make clean && \ - cd /tmp && \ - rm -rf /tmp/fftw-* - -# -# PYFFTW latest version nov 2023 -# pyfftw is linked to fftw3 compiled above -# -ARG pyfftw_ver=v0.13.1.tar.gz -ARG pip_install_opts='--no-binary=pyfftw --no-deps --no-build-isolation' -RUN cd /tmp && \ - wget -q https://github.com/pyFFTW/pyFFTW/archive/refs/tags/${pyfftw_ver} && \ - tar xzvf ${pyfftw_ver} && \ - rm -f ${pyfftw_ver} && \ - cd pyFFTW-* && \ - PYFFTW_INCLUDE="/include" \ - ${PYTHON_EXECUTABLE} -m pip install ${pip_install_opts} pyfftw && \ - cd /tmp && \ - rm -rf /tmp/pyFFTW-* - -# -# Intel experimental OpenCL platform with SYCL support -# OpenCL RT for Intel CPU -# -# nov 2023: update OclCpuExp 2023.16.10 and oneTBB 2021.11.0 -# https://github.com/intel/llvm/releases/tag/ -# no x64! 2023-WW46/oclcpuexp-2023.16.10.0.17_rel.tar.gz -> Error test_poisson.py -# 2023-WW27/oclcpuexp-2023.16.6.0.28_rel.tar.gz -> Error test_array.py (nan_to_num) -# 2023-WW13/oclcpuexp-2023.15.3.0.20_rel.tar.gz -# 2022-12/oclcpuexp-2022.15.12.0.01_rel.tar.gz -# -ARG HTTPOCL='https://github.com/intel/llvm/releases/download' -ARG HTTPTBB='https://github.com/oneapi-src/oneTBB/releases/download' -ARG OCLCPUEXP='/opt/intel/oclcpuexp' -RUN mkdir -p ${OCLCPUEXP} &&\ - cd ${OCLCPUEXP} &&\ - wget -q ${HTTPOCL}/2023-WW27/oclcpuexp-2023.16.6.0.28_rel.tar.gz &&\ - tar -xzf oclcpuexp-*.tar.gz &&\ - rm -rf oclcpuexp-*.tar.gz &&\ - mv x64/* ./. &&\ - rm -rf x64 &&\ - wget -q ${HTTPTBB}/v2021.11.0/oneapi-tbb-2021.11.0-lin.tgz &&\ - tar -xzf oneapi-tbb-*.tgz &&\ - mv oneapi-tbb-*/lib/intel64/gcc4.8/* ./. &&\ - rm -rf oneapi-tbb-* &&\ - rm -rf *debug* &&\ - ln -fs ${OCLCPUEXP}/libOpenCL.so /usr/local/lib/libOpenCL.so &&\ - ln -fs ${OCLCPUEXP}/libOpenCL.so.1 /usr/local/lib/libOpenCL.so.1 &&\ - ln -fs ${OCLCPUEXP}/libOpenCL.so.1.2 /usr/local/lib/libOpenCL.so.1.2 &&\ - echo "${OCLCPUEXP}" >> /etc/ld.so.conf.d/libintelopenclexp.conf &&\ - mkdir -p /etc/OpenCL/vendors &&\ - echo "${OCLCPUEXP}/libintelocl.so" > /etc/OpenCL/vendors/intel_expcpu.icd - -# To run MPI test as root on docker image -ENV OMPI_ALLOW_RUN_AS_ROOT=1 -ENV OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 - -# ensure all libraries are known by the runtime linker -# clean cached packages -RUN ldconfig && \ - rm -rf /var/lib/apt/lists/* && \ - rm -rf $HOME/.cache/pip/* && \ - rm -rf /tmp/* - -############### -# Final-Stage # -############### -FROM main_stage AS final-stage - -COPY --from=hptt /usr/local/include /usr/local/include -COPY --from=hptt /usr/local/lib /usr/local/lib -COPY --from=flint /usr/local/include /usr/local/include -COPY --from=flint /usr/local/lib /usr/local/lib - -# january 2024: h5py doesn't compile with cython==3.x.x! -# january 2024: pyfftw doesn't compile with cython==3.x.x! -RUN pip install --upgrade cython==3.0.8 -RUN pip uninstall -y setuptools - -ENV PYOPENCL_COMPILER_OUTPUT=1 - -CMD ["/bin/bash"] diff --git a/ci/docker_images/ubuntu_jammy_lite/Dockerfile b/ci/docker_images/ubuntu_jammy_lite/Dockerfile deleted file mode 100644 index e30749bf7..000000000 --- a/ci/docker_images/ubuntu_jammy_lite/Dockerfile +++ /dev/null @@ -1,79 +0,0 @@ -## -## Copyright (c) HySoP 2011-2024 -## -## This file is part of HySoP software. -## See "https://particle_methods.gricad-pages.univ-grenoble-alpes.fr/hysop-doc/" -## for further info. -## -## Licensed under the Apache License, Version 2.0 (the "License"); -## you may not use this file except in compliance with the License. -## You may obtain a copy of the License at -## -## http://www.apache.org/licenses/LICENSE-2.0 -## -## Unless required by applicable law or agreed to in writing, software -## distributed under the License is distributed on an "AS IS" BASIS, -## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -## See the License for the specific language governing permissions and -## limitations under the License. -## - -# -FROM ubuntu:jammy -LABEL authors="Jean-Baptiste.Keck@imag.fr, Nicolas.Grima@univ-pau.fr" - -# parallel builds -ARG NTHREADS -ENV MAKEFLAGS "-j${NTHREADS}" -ENV PYTHON_EXECUTABLE=python3.10 - -# upgrade initial image -ENV DEBIAN_FRONTEND noninteractive - -# get build tools and required libraries -RUN apt-get update && apt-get install -y --no-install-recommends \ - expat \ - unzip \ - xz-utils \ - pkg-config \ - cmake \ - clinfo \ - rsync \ - git \ - ssh \ - curl \ - wget \ - ca-certificates \ - gcc \ - g++ \ - lsb-core \ - cpio \ - libnuma1 \ - libpciaccess0 \ - libreadline-dev \ - libgcc-11-dev \ - libcairo-dev \ - libcairomm-1.0-dev \ - ${PYTHON_EXECUTABLE}-dev \ - openmpi-bin \ - libopenmpi-dev \ - hdf5-tools \ - python3-pip \ - gfortran \ - libfftw3-mpi-dev \ - libfftw3-dev - -RUN apt autoclean -y && \ - apt autoremove -y && \ - rm -rf /var/lib/apt/lists/* - -ENV MPICC "mpicc" - -RUN ${PYTHON_EXECUTABLE} -m pip install --upgrade pip - -COPY ci/requirements_minimal.txt /home/requirements.txt -RUN ${PYTHON_EXECUTABLE} -m pip install -r /home/requirements.txt - -RUN ${PYTHON_EXECUTABLE} -m pip install tox - -CMD ["/bin/bash"] diff --git a/ci/utils/build_docker_image.bat b/ci/utils/build_docker_image.bat index c334a274a..6121b4e6c 100755 --- a/ci/utils/build_docker_image.bat +++ b/ci/utils/build_docker_image.bat @@ -22,5 +22,5 @@ set "SCRIPT_DIR=%CD%" popd set "NTHREADS=%NUMBER_OF_PROCESSORS%" set "HYSOP_REGISTRY_URL=gricad-registry.univ-grenoble-alpes.fr" -if "%~1" NEQ "" (set "DOCKER_IMAGE_TAG=%~1") else (set "DOCKER_IMAGE_TAG=ubuntu_jammy_meson") +if "%~1" NEQ "" (set "DOCKER_IMAGE_TAG=%~1") else (set "DOCKER_IMAGE_TAG=ci_cpu_intel") docker build --rm=true --build-arg "NTHREADS=%NTHREADS%" -t "%HYSOP_REGISTRY_URL%/particle_methods/hysop/%DOCKER_IMAGE_TAG%:latest" -f "%SCRIPT_DIR%\..\docker_images\%DOCKER_IMAGE_TAG%\Dockerfile" "%SCRIPT_DIR%\..\.." diff --git a/ci/utils/build_docker_image.sh b/ci/utils/build_docker_image.sh index 0cfc231be..02c8a658c 100755 --- a/ci/utils/build_docker_image.sh +++ b/ci/utils/build_docker_image.sh @@ -21,7 +21,7 @@ set -feu -o pipefail SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" NTHREADS="$(nproc)" -DOCKER_IMAGE_TAG=${1:-ubuntu_jammy_meson} +DOCKER_IMAGE_TAG=${1:-ci_cpu_intel} HYSOP_REGISTRY_URL='gricad-registry.univ-grenoble-alpes.fr' docker build --rm=true --build-arg "NTHREADS=$NTHREADS" -t "${HYSOP_REGISTRY_URL}/particle_methods/hysop/${DOCKER_IMAGE_TAG}:latest" -f "${SCRIPT_DIR}/../docker_images/${DOCKER_IMAGE_TAG}/Dockerfile" "${SCRIPT_DIR}/../.." diff --git a/ci/utils/pull_docker_image.bat b/ci/utils/pull_docker_image.bat index f73473ae1..c74669dab 100755 --- a/ci/utils/pull_docker_image.bat +++ b/ci/utils/pull_docker_image.bat @@ -23,7 +23,7 @@ popd set "HYSOP_REGISTRY_URL=gricad-registry.univ-grenoble-alpes.fr" -if "%~1" NEQ "" (set "DOCKER_IMAGE_TAG=%~1") else (set "DOCKER_IMAGE_TAG=ubuntu_jammy_meson") +if "%~1" NEQ "" (set "DOCKER_IMAGE_TAG=%~1") else (set "DOCKER_IMAGE_TAG=ci_cpu_intel") docker logout docker login "%HYSOP_REGISTRY_URL%" diff --git a/ci/utils/pull_docker_image.sh b/ci/utils/pull_docker_image.sh index 93d7be824..c3deaf176 100755 --- a/ci/utils/pull_docker_image.sh +++ b/ci/utils/pull_docker_image.sh @@ -19,7 +19,7 @@ ## limitations under the License. ## set -ef -o pipefail -DOCKER_IMAGE_TAG=${1:-ubuntu_jammy_meson} +DOCKER_IMAGE_TAG=${1:-ci_cpu_intel} HYSOP_REGISTRY_URL='gricad-registry.univ-grenoble-alpes.fr' docker logout if [[ -z "${HYSOP_REGISTRY_USERNAME}" ]] || [[ -z "${HYSOP_REGISTRY_TOKEN}" ]]; then diff --git a/ci/utils/push_docker_image.bat b/ci/utils/push_docker_image.bat index ef4fa99f3..061eee381 100755 --- a/ci/utils/push_docker_image.bat +++ b/ci/utils/push_docker_image.bat @@ -19,7 +19,7 @@ :: set HYSOP_REGISTRY_URL=gricad-registry.univ-grenoble-alpes.fr -if "%~1" NEQ "" (set DOCKER_IMAGE_TAG=%~1) else (set DOCKER_IMAGE_TAG=ubuntu_jammy_meson) +if "%~1" NEQ "" (set DOCKER_IMAGE_TAG=%~1) else (set DOCKER_IMAGE_TAG=ci_cpu_intel) docker push "%HYSOP_REGISTRY_URL%/particle_methods/hysop:%DOCKER_IMAGE_TAG%" docker logout diff --git a/ci/utils/push_docker_image.sh b/ci/utils/push_docker_image.sh index 5756692fa..a79e531c6 100755 --- a/ci/utils/push_docker_image.sh +++ b/ci/utils/push_docker_image.sh @@ -19,7 +19,7 @@ ## limitations under the License. ## set -ef -o pipefail -DOCKER_IMAGE_TAG=${1:-ubuntu_jammy_meson} +DOCKER_IMAGE_TAG=${1:-ci_cpu_intel} HYSOP_REGISTRY_URL='gricad-registry.univ-grenoble-alpes.fr' docker logout if [[ -z "${HYSOP_REGISTRY_USERNAME}" ]] || [[ -z "${HYSOP_REGISTRY_TOKEN}" ]]; then diff --git a/ci/utils/run_ci.bat b/ci/utils/run_ci.bat index fb78d6fa0..51e3dae68 100644 --- a/ci/utils/run_ci.bat +++ b/ci/utils/run_ci.bat @@ -22,7 +22,7 @@ set SCRIPT_DIR=%CD% popd set "HYSOP_REGISTRY_URL=gricad-registry.univ-grenoble-alpes.fr" -if "%~1" NEQ "" (set DOCKER_IMAGE_TAG=%~1) else (set DOCKER_IMAGE_TAG=ubuntu_jammy_meson) +if "%~1" NEQ "" (set DOCKER_IMAGE_TAG=%~1) else (set DOCKER_IMAGE_TAG=ci_cpu_intel) set "DOCKER_IMAGE_TAG_POSTFIX=%DOCKER_IMAGE_TAG:~-4%" IF "%DOCKER_IMAGE_TAG_POSTFIX%" == "nvidia" (set "EXTRA_ARGS=--gpus all") else (set "EXTRA_ARGS=") set "DOCKER_IMG=%HYSOP_REGISTRY_URL%/particle_methods/hysop/%DOCKER_IMAGE_TAG%:latest" diff --git a/ci/utils/run_ci.sh b/ci/utils/run_ci.sh index 95764a377..816aa7d05 100755 --- a/ci/utils/run_ci.sh +++ b/ci/utils/run_ci.sh @@ -20,7 +20,7 @@ ## set -feu -o pipefail SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -DOCKER_IMAGE_TAG=${1:-ubuntu_jammy_meson} +DOCKER_IMAGE_TAG=${1:-ci_cpu_intel} HYSOP_REGISTRY_URL='gricad-registry.univ-grenoble-alpes.fr' DOCKER_IMG="${HYSOP_REGISTRY_URL}/particle_methods/hysop/${DOCKER_IMAGE_TAG}:latest" CONTAINER_ID='hysop_build_and_test' diff --git a/ci/utils/run_debug.bat b/ci/utils/run_debug.bat index ce2658370..04a2842dd 100644 --- a/ci/utils/run_debug.bat +++ b/ci/utils/run_debug.bat @@ -22,7 +22,7 @@ set SCRIPT_DIR=%CD% popd set "HYSOP_REGISTRY_URL=gricad-registry.univ-grenoble-alpes.fr" -if "%~1" NEQ "" (set DOCKER_IMAGE_TAG=%~1) else (set DOCKER_IMAGE_TAG=ubuntu_jammy_meson) +if "%~1" NEQ "" (set DOCKER_IMAGE_TAG=%~1) else (set DOCKER_IMAGE_TAG=ci_cpu_intel) set "DOCKER_IMAGE_TAG_POSTFIX=%DOCKER_IMAGE_TAG:~-4%" IF "%DOCKER_IMAGE_TAG_POSTFIX%" == "nvidia" (set "EXTRA_ARGS=--gpus all") else (set "EXTRA_ARGS=") set "DOCKER_IMG=%HYSOP_REGISTRY_URL%/particle_methods/hysop/%DOCKER_IMAGE_TAG%:latest" diff --git a/ci/utils/run_debug.sh b/ci/utils/run_debug.sh index 3de53580e..51a28a090 100755 --- a/ci/utils/run_debug.sh +++ b/ci/utils/run_debug.sh @@ -20,7 +20,7 @@ ## set -feu -o pipefail SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -DOCKER_IMAGE_TAG=${1:-ubuntu_jammy_meson} +DOCKER_IMAGE_TAG=${1:-ci_cpu_intel} HYSOP_REGISTRY_URL='gricad-registry.univ-grenoble-alpes.fr' DOCKER_IMG="${HYSOP_REGISTRY_URL}/particle_methods/hysop/${DOCKER_IMAGE_TAG}:latest" CONTAINER_ID='hysop_build_and_debug' diff --git a/ci/utils/run_docker_image.bat b/ci/utils/run_docker_image.bat index 007170563..e1240ea83 100755 --- a/ci/utils/run_docker_image.bat +++ b/ci/utils/run_docker_image.bat @@ -21,7 +21,7 @@ pushd %~dp0 set "SCRIPT_DIR=%CD%" popd set "HYSOP_REGISTRY_URL=gricad-registry.univ-grenoble-alpes.fr" -if "%~1" NEQ "" (set "DOCKER_IMAGE_TAG=%~1") else (set "DOCKER_IMAGE_TAG=ubuntu_jammy_meson") +if "%~1" NEQ "" (set "DOCKER_IMAGE_TAG=%~1") else (set "DOCKER_IMAGE_TAG=ci_cpu_intel") set "DOCKER_IMAGE_TAG_POSTFIX=%DOCKER_IMAGE_TAG:~-4%" if "%DOCKER_IMAGE_TAG_POSTFIX%" == "nvidia" (set "EXTRA_ARGS=--gpus all") else (set "EXTRA_ARGS=") docker run --rm --cap-add=SYS_PTRACE %EXTRA_ARGS% -it -v "%SCRIPT_DIR%\..\..:/hysop:ro" "%HYSOP_REGISTRY_URL%/particle_methods/hysop/%DOCKER_IMAGE_TAG%:latest" diff --git a/ci/utils/run_docker_image.sh b/ci/utils/run_docker_image.sh index 548b6127c..f27c7b29e 100755 --- a/ci/utils/run_docker_image.sh +++ b/ci/utils/run_docker_image.sh @@ -20,7 +20,7 @@ ## set -feu -o pipefail SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -DOCKER_IMAGE_TAG=${1:-ubuntu_jammy_meson} +DOCKER_IMAGE_TAG=${1:-ci_cpu_intel} HYSOP_REGISTRY_URL='gricad-registry.univ-grenoble-alpes.fr' if [[ ${DOCKER_IMAGE_TAG} == *_nvidia ]]; then diff --git a/ci/utils/run_user_docker_image.sh b/ci/utils/run_user_docker_image.sh index b323dfddf..7dadb8779 100755 --- a/ci/utils/run_user_docker_image.sh +++ b/ci/utils/run_user_docker_image.sh @@ -20,7 +20,7 @@ ## set -feu -o pipefail SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -DOCKER_IMAGE_TAG=${1:-hysop_user_jammy} +DOCKER_IMAGE_TAG=${1:-hysop_user_cpu_intel} # Get your host's UID and GID export HOST_UID=$(id -u) diff --git a/hysop/numerics/remesh/kernel_generator.py b/hysop/numerics/remesh/kernel_generator.py index 31dcc1c0f..29248304e 100644 --- a/hysop/numerics/remesh/kernel_generator.py +++ b/hysop/numerics/remesh/kernel_generator.py @@ -407,16 +407,14 @@ class SymmetricKernelGenerator: # Cr-continuity on inner points -> (Ms-1)*(r+1) eqs for d in range(r + 1): for i in range(Ms - 1): - eq = dPs[i][d].xreplace({x: sm.Integer(i + 1)}) - dPs[i + 1][ - d - ].xreplace( - {x: sm.Integer(i + 1)} - ) # = 0 + eq = dPs[i][d].xreplace({x: sm.Integer(i + 1)}) - \ + dPs[i + 1][d].xreplace({x: sm.Integer(i + 1)}) # = 0 eqs.append(eq.as_expr()) - # Interpolation condition on the left -> Ms equations for i in range(Ms): - eq = Pp[i].xreplace({x: sm.Integer(i)}) - H[Ms + i] # = 0 + # NG 17 july 2024 => q = Pp[i].xreplace({x: sm.Integer(i)}) - H[Ms + i] # = 0 + print(' NG DBG: f2q(H[Ms + i]) ', f2q(H[Ms + i])) + eq = Pp[i].xreplace({x: sm.Integer(i)}) - sm.Rational(f2q(H[Ms + i])) # = 0 eqs.append(eq.as_expr()) # Discrete moments @@ -427,13 +425,16 @@ class SymmetricKernelGenerator: if m > 0 and l == 0: continue i = Ms - l - e = P[i].xreplace({x: s - f2q(l)}).as_expr() + # NG 17 july 2024 => e = P[i].xreplace({x: s - f2q(l)}).as_expr() + e = P[i].xreplace({x: s - sm.Rational(f2q(l))}).as_expr() if m > 0: - e *= f2q(l**m) + # NG 17 july 2024 => e *= sm.Rational(f2q(l**m)) + e *= sm.Rational(f2q(l**m)) expr += e Pm = sm.polys.polytools.poly(expr, s) for i, Cmi in enumerate(Pm.all_coeffs()[::-1]): - eqs.append(Cmi - M[m][i]) + # NG 17 july 2024 => qs.append( Cmi - M[m][i] ) + eqs.append( Cmi - sm.Rational(f2q(M[m][i])) ) if verbose: print(" => System built.") -- GitLab