diff --git a/.github/workflows/build-pull-request.yaml b/.github/workflows/build-pull-request.yaml index 2a8b63fe7..a268def25 100644 --- a/.github/workflows/build-pull-request.yaml +++ b/.github/workflows/build-pull-request.yaml @@ -35,7 +35,7 @@ jobs: exit 1 build-n-test: - runs-on: [gpu] + runs-on: [ubuntu-latest] strategy: matrix: @@ -70,12 +70,3 @@ jobs: run: | rm -rf /home/runner/.buildx-cache mv /home/runner/.buildx-cache-new /home/runner/.buildx-cache - - - name: Run tests - if: ${{ matrix.target == 'develop' }} - run: | - docker run --rm --gpus 'device=1' ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} tests/test_opticks.sh - docker run --rm --gpus 'device=1' ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} tests/test_simg4ox.sh - docker run --rm --gpus 'device=1' ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} tests/test_GPURaytrace.sh - docker run --rm --gpus 'device=1' ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} tests/test_GPUPhotonFileSource.sh - docker run --rm --gpus 'device=1' ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} tests/test_GPUPhotonSource_8x8SiPM.sh diff --git a/Dockerfile b/Dockerfile index 48ac745ed..a3cfcf91a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,6 +8,25 @@ FROM nvidia/cuda:${CUDA_VERSION}-devel-${OS} AS base ARG OPTIX_VERSION=9.0.0 ARG GEANT4_VERSION=11.3.2 ARG CMAKE_VERSION=4.2.1 +ARG CMAKE_BUILD_JOBS=4 +ARG GEANT4_INSTALL_DATA=ON +ARG GEANT4_DATA_URL=https://geant4-data.web.cern.ch/datasets +ARG GEANT4_DATASETS="\ +G4NDL.4.7.1.tar.gz \ +G4EMLOW.8.6.1.tar.gz \ +G4PhotonEvaporation.6.1.tar.gz \ +G4RadioactiveDecay.6.1.2.tar.gz \ +G4PARTICLEXS.4.1.tar.gz \ +G4PII.1.3.tar.gz \ +G4RealSurface.2.2.tar.gz \ +G4SAIDDATA.2.0.tar.gz \ +G4ABLA.3.3.tar.gz \ +G4INCL.1.2.tar.gz \ +G4ENSDFSTATE.3.0.tar.gz \ +G4CHANNELING.1.0.tar.gz \ +G4TENDL.1.4.tar.gz \ +G4NUDEXLIB.1.0.tar.gz \ +G4URRPT.1.1.tar.gz" ENV DEBIAN_FRONTEND=noninteractive @@ -28,10 +47,17 @@ RUN curl -fsSL https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSI | tar -xz --strip-components=1 -C /usr/local RUN mkdir -p /opt/geant4/src && curl -sL https://github.com/Geant4/geant4/archive/refs/tags/v${GEANT4_VERSION}.tar.gz | tar -xz --strip-components 1 -C /opt/geant4/src \ - && cmake -S /opt/geant4/src -B /opt/geant4/build -DGEANT4_USE_OPENGL_X11=ON -DGEANT4_USE_QT=ON -DGEANT4_USE_QT_QT6=ON -DGEANT4_USE_GDML=ON -DGEANT4_INSTALL_DATA=ON -DGEANT4_BUILD_MULTITHREADED=ON \ - && cmake --build /opt/geant4/build --parallel --target install \ + && cmake -S /opt/geant4/src -B /opt/geant4/build -DGEANT4_USE_OPENGL_X11=ON -DGEANT4_USE_QT=ON -DGEANT4_USE_QT_QT6=ON -DGEANT4_USE_GDML=ON -DGEANT4_INSTALL_DATA=OFF -DGEANT4_INSTALL_DATADIR=share/Geant4/data -DGEANT4_BUILD_MULTITHREADED=ON \ + && cmake --build /opt/geant4/build --parallel ${CMAKE_BUILD_JOBS} --target install \ && rm -fr /opt/geant4 +RUN if [ "${GEANT4_INSTALL_DATA}" = "ON" ]; then \ + mkdir -p /usr/local/share/Geant4/data; \ + for dataset in ${GEANT4_DATASETS}; do \ + curl -fsSL "${GEANT4_DATA_URL}/${dataset}" | tar -xz -C /usr/local/share/Geant4/data; \ + done; \ + fi + RUN mkdir -p /opt/clhep/src && curl -sL https://gitlab.cern.ch/CLHEP/CLHEP/-/archive/CLHEP_2_4_7_1/CLHEP-CLHEP_2_4_7_1.tar.gz | tar -xz --strip-components 1 -C /opt/clhep/src \ && cmake -S /opt/clhep/src -B /opt/clhep/build \ && cmake --build /opt/clhep/build --parallel --target install \ @@ -84,7 +110,7 @@ FROM base AS release COPY . $OPTICKS_HOME RUN cmake -S $OPTICKS_HOME -B $OPTICKS_BUILD -DCMAKE_INSTALL_PREFIX=$OPTICKS_PREFIX -DCMAKE_BUILD_TYPE=Release \ - && cmake --build $OPTICKS_BUILD --parallel --target install + && cmake --build $OPTICKS_BUILD --parallel ${CMAKE_BUILD_JOBS} --target install FROM base AS develop @@ -94,4 +120,4 @@ RUN apt update && apt install -y x11-apps mesa-utils vim COPY . $OPTICKS_HOME RUN cmake -S $OPTICKS_HOME -B $OPTICKS_BUILD -DCMAKE_INSTALL_PREFIX=$OPTICKS_PREFIX -DCMAKE_BUILD_TYPE=Debug \ - && cmake --build $OPTICKS_BUILD --parallel --target install + && cmake --build $OPTICKS_BUILD --parallel ${CMAKE_BUILD_JOBS} --target install