Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
138 changes: 117 additions & 21 deletions .github/workflows/docker-bases.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,24 @@ on:
- "/docker/Dockerfile.cpu"
- "/docker/Dockerfile.amd"
- "/docker/Dockerfile.intel"
- "/docker/Dockerfile.nogil"
workflow_dispatch:
inputs:
nogil:
type: boolean
default: true
cpu:
type: boolean
default: false
default: true
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why this switch?

Copy link
Contributor Author

@enwask enwask Aug 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The default is used for automated runs, so with a default of false none of the automated runs actually built any images

nvidia:
type: boolean
default: false
default: true
amd:
type: boolean
default: false
default: true
intel:
type: boolean
default: false
default: true

tags:
description: "Build compiler bases"
Expand All @@ -33,6 +37,43 @@ on:
- cron: "0 0 1 * *"

jobs:
#######################################################
########### Free-threaded Python meta-base ############
#######################################################
deploy-nogil-base:
name: "python-nogil-base"
runs-on: ubuntu-latest
if: inputs.nogil
env:
DOCKER_BUILDKIT: "1"

steps:
- name: Checkout devito
uses: actions/checkout@v5

- name: Check event name
run: echo ${{ github.event_name }}

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Build free-threaded Python base
uses: docker/build-push-action@v6
with:
context: .
file: "./docker/Dockerfile.nogil"
push: true
tags: "devitocodes/bases:python-nogil"

#######################################################
############## Basic gcc CPU ##########################
#######################################################
Expand All @@ -46,10 +87,18 @@ jobs:
strategy:
matrix:
gcc: ["", "14"]
disable-gil: [false, true]
include:
- disable-gil: false
build-args: ""
suffix: ""
- disable-gil: true
build-args: "base=devitocodes/bases:python-nogil"
suffix: "-nogil"

steps:
- name: Checkout devito
uses: actions/checkout@v5
uses: actions/checkout@v4

- name: Check event name
run: echo ${{ github.event_name }}
Expand All @@ -72,8 +121,10 @@ jobs:
context: .
file: "./docker/Dockerfile.cpu"
push: true
build-args: "gcc=${{ matrix.gcc }}"
tags: "devitocodes/bases:cpu-gcc${{ matrix.gcc }}"
build-args: |
gcc=${{ matrix.gcc }}
${{ matrix.build-args }}
tags: "devitocodes/bases:cpu-gcc${{ matrix.gcc }}${{ matrix.suffix }}"

#######################################################
############## Intel OneApi CPU #######################
Expand All @@ -85,6 +136,16 @@ jobs:
env:
DOCKER_BUILDKIT: "1"

strategy:
matrix:
include:
- disable-gil: false
build-args: ""
suffix: ""
- disable-gil: true
build-args: "base=devitocodes/bases:python-nogil"
suffix: "-nogil"

steps:
- name: Checkout devito
uses: actions/checkout@v5
Expand All @@ -103,15 +164,18 @@ jobs:
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: ICX image
uses: docker/build-push-action@v6
with:
context: .
file: "./docker/Dockerfile.intel"
push: true
target: "icx"
build-args: "arch=icx"
tags: "devitocodes/bases:cpu-icx"
build-args: |
arch=icx
${{ matrix.build-args }}
tags: "devitocodes/bases:cpu-icx${{ matrix.suffix }}"

- name: SYCL CPU image
uses: docker/build-push-action@v6
Expand All @@ -120,8 +184,10 @@ jobs:
file: "./docker/Dockerfile.intel"
push: true
target: "cpu-sycl"
build-args: "arch=cpu-sycl"
tags: "devitocodes/bases:cpu-sycl"
build-args: |
arch=cpu-sycl
${{ matrix.build-args }}
tags: "devitocodes/bases:cpu-sycl${{ matrix.suffix }}"

- name: SYCL GPU image
uses: docker/build-push-action@v6
Expand All @@ -130,8 +196,10 @@ jobs:
file: "./docker/Dockerfile.intel"
push: true
target: "gpu-sycl"
build-args: "arch=gpu-sycl"
tags: "devitocodes/bases:gpu-sycl"
build-args: |
arch=gpu-sycl
${{ matrix.build-args }}
tags: "devitocodes/bases:gpu-sycl${{ matrix.suffix }}"

#######################################################
################### Nvidia nvhpc ######################
Expand All @@ -143,6 +211,16 @@ jobs:
env:
DOCKER_BUILDKIT: "1"

strategy:
matrix:
include:
- disable-gil: false
build-args: ""
suffix: ""
- disable-gil: true
build-args: "base=devitocodes/bases:python-nogil"
suffix: "-nogil"

steps:
- name: Checkout devito
uses: actions/checkout@v5
Expand All @@ -169,10 +247,12 @@ jobs:
file: "./docker/Dockerfile.nvidia"
push: true
target: "nvc"
build-args: "arch=nvc"
build-args: |
arch=nvc
${{ matrix.build-args }}
# Label (not tag) with runner name for traceability without changing image tags
labels: builder-runner=${{ runner.name }}
tags: "devitocodes/bases:nvidia-nvc"
tags: "devitocodes/bases:nvidia-nvc${{ matrix.suffix }}"

- name: NVCC image
uses: docker/build-push-action@v6
Expand All @@ -181,9 +261,11 @@ jobs:
file: "./docker/Dockerfile.nvidia"
push: true
target: "nvcc"
build-args: "arch=nvcc"
build-args: |
arch=nvcc
${{ matrix.build-args }}
labels: builder-runner=${{ runner.name }}
tags: "devitocodes/bases:nvidia-nvcc"
tags: "devitocodes/bases:nvidia-nvcc${{ matrix.suffix }}"

- name: NVC host image
uses: docker/build-push-action@v6
Expand All @@ -192,9 +274,11 @@ jobs:
file: "./docker/Dockerfile.nvidia"
push: true
target: "nvc-host"
build-args: "arch=nvc-host"
build-args: |
arch=nvc-host
${{ matrix.build-args }}
labels: builder-runner=${{ runner.name }}
tags: "devitocodes/bases:cpu-nvc"
tags: "devitocodes/bases:cpu-nvc${{ matrix.suffix }}"

#######################################################
##################### AMD #############################
Expand All @@ -206,6 +290,16 @@ jobs:
env:
DOCKER_BUILDKIT: "1"

strategy:
matrix:
include:
- disable-gil: false
build-args: ""
suffix: ""
- disable-gil: true
build-args: "base=devitocodes/bases:python-nogil"
suffix: "-nogil"

steps:
- name: Checkout devito
uses: actions/checkout@v5
Expand Down Expand Up @@ -236,7 +330,8 @@ jobs:
ROCM_VERSION=5.5.1
UCX_BRANCH=v1.13.1
OMPI_BRANCH=v4.1.4
tags: devitocodes/bases:amd
${{ matrix.build-args }}
tags: devitocodes/bases:amd${{ matrix.suffix }}

- name: AMD HIP image
uses: docker/build-push-action@v6
Expand All @@ -247,4 +342,5 @@ jobs:
target: "hip"
build-args: |
ROCM_VERSION=6.3.4
tags: devitocodes/bases:amd-hip
${{ matrix.build-args }}
tags: devitocodes/bases:amd-hip${{ matrix.suffix }}
24 changes: 24 additions & 0 deletions .github/workflows/docker-devito.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,25 +27,49 @@ jobs:
test: 'tests/test_gpu_openacc.py tests/test_gpu_common.py'
runner: ["self-hosted", "nvidiagpu"]

- base: 'bases:nvidia-nvc-nogil'
tag: 'nvidia-nvc-nogil'
flag: '--init --gpus all'
test: 'tests/test_gpu_openacc.py tests/test_gpu_common.py'
runner: ["self-hosted", "nvidiagpu"]

# Runtime gpu flags from https://hub.docker.com/r/rocm/tensorflow/
- base: 'bases:amd'
tag: 'amd'
flag: '--init --network=host --device=/dev/kfd --device=/dev/dri --ipc=host --group-add video --group-add $(getent group render | cut -d: -f3) --cap-add=SYS_PTRACE --security-opt seccomp=unconfined'
test: 'tests/test_gpu_openmp.py'
runner: ["self-hosted", "amdgpu"]

- base: 'bases:amd-nogil'
tag: 'amd-nogil'
flag: '--init --network=host --device=/dev/kfd --device=/dev/dri --ipc=host --group-add video --group-add $(getent group render | cut -d: -f3) --cap-add=SYS_PTRACE --security-opt seccomp=unconfined'
test: 'tests/test_gpu_openmp.py'
runner: ["self-hosted", "amdgpu"]

- base: 'bases:cpu-gcc'
tag: "gcc"
flag: '--init -t'
test: 'tests/test_operator.py'
runner: ubuntu-latest

- base: 'bases:cpu-gcc-nogil'
tag: "gcc-nogil"
flag: '--init -t'
test: 'tests/test_operator.py'
runner: ubuntu-latest

- base: 'bases:cpu-icx'
tag: "icx"
flag: '--init -t'
test: 'tests/test_operator.py'
runner: ubuntu-latest

- base: 'bases:cpu-icx-nogil'
tag: "icx-nogil"
flag: '--init -t'
test: 'tests/test_operator.py'
runner: ubuntu-latest

steps:
- name: Checkout devito
uses: actions/checkout@v5
Expand Down
Loading
Loading