diff --git a/.buildkite/amd-mi210-debug-tests.yml b/.buildkite/amd-mi210-debug-tests.yml new file mode 100644 index 00000000..c215c738 --- /dev/null +++ b/.buildkite/amd-mi210-debug-tests.yml @@ -0,0 +1,83 @@ +steps: + - label: ":cmake: Build AMD MI210 (Coverage)" + key: "build-mi210" + command: | + source /opt/spack-environment/activate.sh + export WORKSPACE=/workspace + mkdir -p /workspace/build + cd /workspace/build + FC=gfortran cmake -DCMAKE_INSTALL_PREFIX=/workspace/opt/self \ + -DCMAKE_BUILD_TYPE="coverage" \ + -DSELF_ENABLE_GPU=ON \ + -DSELF_GPU_BACKEND=HIP \ + -DSELF_ENABLE_TESTING=ON \ + -DCMAKE_HIP_ARCHITECTURES="gfx90a" \ + -DGPU_TARGETS="gfx90a" \ + -DSELF_ENABLE_EXAMPLES=ON \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ + /workspace/ + make -j + lcov --capture --initial \ + --directory /workspace/build/src/ \ + --output-file /workspace/initial.info + env: + slurm_partition: "main" + slurm_time: "01:00:00" + slurm_nodes: 1 + slurm_ntasks: 2 + slurm_cpus_per_task: 8 + slurm_container_image: "docker://higherordermethods/selfish:latest-x86-rocm643-gfx90a" + agents: + queue: "galapagos" + + - label: ":test_tube: Test AMD MI210 (Coverage)" + key: "test-mi210" + depends_on: "build-mi210" + command: | + source /opt/spack-environment/activate.sh + ctest --test-dir /workspace/build --output-on-failure + env: + slurm_partition: "main" + slurm_gres: "gpu:mi210:2" + slurm_time: "01:00:00" + slurm_nodes: 1 + slurm_ntasks: 2 + slurm_cpus_per_task: 8 + slurm_container_image: "docker://higherordermethods/selfish:latest-x86-rocm643-gfx90a" + agents: + queue: "galapagos" + + - label: ":coverage: Coverage AMD MI210" + key: "coverage-mi210" + depends_on: "test-mi210" + command: | + source /opt/spack-environment/activate.sh + lcov --capture \ + --directory /workspace/build/src/ \ + --output-file /workspace/ctest-capture.info + lcov --add-tracefile /workspace/initial.info \ + --add-tracefile /workspace/ctest-capture.info \ + --output-file /workspace/coverage.info + env: + slurm_partition: "main" + slurm_time: "01:00:00" + slurm_nodes: 1 + slurm_ntasks: 2 + slurm_cpus_per_task: 8 + slurm_container_image: "docker://higherordermethods/selfish:latest-x86-rocm643-gfx90a" + agents: + queue: "galapagos" + + - label: ":codecov: Upload Coverage (MI210)" + key: "upload-coverage-mi210" + depends_on: "coverage-mi210" + command: | + curl -Os https://uploader.codecov.io/latest/linux/codecov + chmod +x codecov + ./codecov -t "$${CODECOV_TOKEN}" \ + -f "$${BUILDKITE_BUILD_CHECKOUT_PATH}/coverage.info" \ + -F buildkite-rocm-mi210 + secrets: + - CODECOV_TOKEN + agents: + queue: "galapagos" diff --git a/.buildkite/nvidia-v100-debug-tests.yml b/.buildkite/nvidia-v100-debug-tests.yml new file mode 100644 index 00000000..7992b4dc --- /dev/null +++ b/.buildkite/nvidia-v100-debug-tests.yml @@ -0,0 +1,82 @@ +steps: + - label: ":cmake: Build NVIDIA V100 (Coverage)" + key: "build-v100" + command: | + source /opt/spack-environment/activate.sh + export WORKSPACE=/workspace + mkdir -p /workspace/build + cd /workspace/build + FC=gfortran cmake -DCMAKE_INSTALL_PREFIX=/workspace/opt/self \ + -DCMAKE_BUILD_TYPE="coverage" \ + -DSELF_ENABLE_GPU=ON \ + -DSELF_GPU_BACKEND=CUDA \ + -DSELF_ENABLE_TESTING=ON \ + -DCMAKE_CUDA_ARCHITECTURES="70" \ + -DSELF_ENABLE_EXAMPLES=ON \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ + /workspace/ + make -j + lcov --capture --initial \ + --directory /workspace/build/src/ \ + --output-file /workspace/initial.info + env: + slurm_partition: "main" + slurm_time: "01:00:00" + slurm_nodes: 1 + slurm_ntasks: 2 + slurm_cpus_per_task: 8 + slurm_container_image: "docker://higherordermethods/selfish:latest-x86-cuda124-sm70" + agents: + queue: "galapagos" + + - label: ":test_tube: Test NVIDIA V100 (Coverage)" + key: "test-v100" + depends_on: "build-v100" + command: | + source /opt/spack-environment/activate.sh + ctest --test-dir /workspace/build --output-on-failure + env: + slurm_partition: "main" + slurm_gres: "gpu:v100:2" + slurm_time: "01:00:00" + slurm_nodes: 1 + slurm_ntasks: 2 + slurm_cpus_per_task: 8 + slurm_container_image: "docker://higherordermethods/selfish:latest-x86-cuda124-sm70" + agents: + queue: "galapagos" + + - label: ":coverage: Coverage NVIDIA V100" + key: "coverage-v100" + depends_on: "test-v100" + command: | + source /opt/spack-environment/activate.sh + lcov --capture \ + --directory /workspace/build/src/ \ + --output-file /workspace/ctest-capture.info + lcov --add-tracefile /workspace/initial.info \ + --add-tracefile /workspace/ctest-capture.info \ + --output-file /workspace/coverage.info + env: + slurm_partition: "main" + slurm_time: "01:00:00" + slurm_nodes: 1 + slurm_ntasks: 2 + slurm_cpus_per_task: 8 + slurm_container_image: "docker://higherordermethods/selfish:latest-x86-cuda124-sm70" + agents: + queue: "galapagos" + + - label: ":codecov: Upload Coverage (V100)" + key: "upload-coverage-v100" + depends_on: "coverage-v100" + command: | + curl -Os https://uploader.codecov.io/latest/linux/codecov + chmod +x codecov + ./codecov -t "$${CODECOV_TOKEN}" \ + -f "$${BUILDKITE_BUILD_CHECKOUT_PATH}/coverage.info" \ + -F buildkite-cuda-v100 + secrets: + - CODECOV_TOKEN + agents: + queue: "galapagos" diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 5a685a2d..d2eaa9a3 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -1,54 +1,22 @@ steps: - - label: ":partyparrot: Build & Test AMD MI210 (Coverage)" - key: "build-test-mi210" - command: | - source /opt/spack-environment/activate.sh - export WORKSPACE=/workspace - mkdir -p /workspace/build - rocminfo - cd /workspace/build - FC=gfortran cmake -DCMAKE_INSTALL_PREFIX=/workspace/opt/self \ - -DCMAKE_BUILD_TYPE="coverage" \ - -DSELF_ENABLE_GPU=ON \ - -DSELF_GPU_BACKEND=HIP \ - -DSELF_ENABLE_TESTING=ON \ - -DCMAKE_HIP_ARCHITECTURES="gfx90a" \ - -DGPU_TARGETS="gfx90a" \ - -DSELF_ENABLE_EXAMPLES=ON \ - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ - /workspace/ - make -j - lcov --capture --initial \ - --directory /workspace/build/src/ \ - --output-file /workspace/initial.info - ctest --test-dir /workspace/build --output-on-failure - lcov --capture \ - --directory /workspace/build/src/ \ - --output-file /workspace/ctest-capture.info - lcov --add-tracefile /workspace/initial.info \ - --add-tracefile /workspace/ctest-capture.info \ - --output-file /workspace/coverage.info - env: - slurm_partition: "main" - slurm_gres: "gpu:mi210:2" - slurm_time: "01:00:00" - slurm_nodes: 1 - slurm_ntasks: 2 - slurm_cpus_per_task: 8 - slurm_container_image: "docker://higherordermethods/selfish:latest-x86-rocm643-gfx90a" - agents: - queue: "galapagos" + # PR builds: coverage tests + release build/test (no push) + - label: ":pipeline: AMD MI210 Coverage Tests" + if: build.branch != "main" + command: buildkite-agent pipeline upload .buildkite/amd-mi210-debug-tests.yml - - label: ":codecov: Upload Coverage" - key: "upload-coverage" - depends_on: "build-test-mi210" - command: | - curl -Os https://uploader.codecov.io/latest/linux/codecov - chmod +x codecov - ./codecov -t "$${CODECOV_TOKEN}" \ - -f "$${BUILDKITE_BUILD_CHECKOUT_PATH}/coverage.info" \ - -F buildkite-rocm-mi210 - secrets: - - CODECOV_TOKEN - agents: - queue: "galapagos" + - label: ":pipeline: NVIDIA V100 Coverage Tests" + if: build.branch != "main" + command: buildkite-agent pipeline upload .buildkite/nvidia-v100-debug-tests.yml + + - label: ":pipeline: x86 CPU Coverage Tests" + if: build.branch != "main" + command: buildkite-agent pipeline upload .buildkite/x86-cpu-debug-tests.yml + + - label: ":pipeline: Release Builds" + if: build.branch != "main" + command: buildkite-agent pipeline upload .buildkite/release-builds.yml + + # Main branch: release build, test, and publish only + - label: ":pipeline: Release & Publish" + if: build.branch == "main" + command: buildkite-agent pipeline upload .buildkite/release-and-publish.yml diff --git a/.buildkite/release-and-publish.yml b/.buildkite/release-and-publish.yml new file mode 100644 index 00000000..1afba292 --- /dev/null +++ b/.buildkite/release-and-publish.yml @@ -0,0 +1,137 @@ +steps: + # ---- AMD MI210 (gfx90a) Release ---- + - label: ":docker: Build Release Image (x86-rocm643-gfx90a)" + key: "docker-build-gfx90a" + command: | + SELFISH_IMAGE="higherordermethods/selfish:latest-x86-rocm643-gfx90a" + docker pull "$${SELFISH_IMAGE}" + SELFISH_SHA=$$(docker inspect --format='{{index .RepoDigests 0}}' "$${SELFISH_IMAGE}" | cut -d@ -f2) + docker build \ + --build-arg SELFISH_IMAGE="$${SELFISH_IMAGE}" \ + --build-arg SELFISH_SHA="$${SELFISH_SHA}" \ + -t higherordermethods/self:$${BUILDKITE_BUILD_NUMBER}-x86-rocm643-gfx90a \ + -t higherordermethods/self:latest-x86-rocm643-gfx90a \ + -f docker/x86_gfx90a/Dockerfile . + env: + slurm_nodelist: "oram" + agents: + queue: "galapagos" + + - label: ":test_tube: Test Release Image (x86-rocm643-gfx90a)" + key: "test-release-gfx90a" + depends_on: "docker-build-gfx90a" + command: | + source /opt/spack-environment/activate.sh + ctest --test-dir /opt/self/build --output-on-failure + env: + slurm_partition: "main" + slurm_gres: "gpu:mi210:2" + slurm_time: "01:00:00" + slurm_nodes: 1 + slurm_ntasks: 2 + slurm_cpus_per_task: 8 + slurm_container_image: "docker://higherordermethods/self:$${BUILDKITE_BUILD_NUMBER}-x86-rocm643-gfx90a" + agents: + queue: "galapagos" + + - label: ":rocket: Push Release Image (x86-rocm643-gfx90a)" + key: "push-release-gfx90a" + depends_on: "test-release-gfx90a" + command: | + docker push higherordermethods/self:$${BUILDKITE_BUILD_NUMBER}-x86-rocm643-gfx90a + docker push higherordermethods/self:latest-x86-rocm643-gfx90a + env: + slurm_nodelist: "oram" + agents: + queue: "galapagos" + + # ---- NVIDIA V100 (sm70) Release ---- + - label: ":docker: Build Release Image (x86-cuda124-sm70)" + key: "docker-build-sm70" + command: | + SELFISH_IMAGE="higherordermethods/selfish:latest-x86-cuda124-sm70" + docker pull "$${SELFISH_IMAGE}" + SELFISH_SHA=$$(docker inspect --format='{{index .RepoDigests 0}}' "$${SELFISH_IMAGE}" | cut -d@ -f2) + docker build \ + --build-arg SELFISH_IMAGE="$${SELFISH_IMAGE}" \ + --build-arg SELFISH_SHA="$${SELFISH_SHA}" \ + -t higherordermethods/self:$${BUILDKITE_BUILD_NUMBER}-x86-cuda124-sm70 \ + -t higherordermethods/self:latest-x86-cuda124-sm70 \ + -f docker/x86_sm70/Dockerfile . + env: + slurm_nodelist: "oram" + agents: + queue: "galapagos" + + - label: ":test_tube: Test Release Image (x86-cuda124-sm70)" + key: "test-release-sm70" + depends_on: "docker-build-sm70" + command: | + source /opt/spack-environment/activate.sh + ctest --test-dir /opt/self/build --output-on-failure + env: + slurm_partition: "main" + slurm_gres: "gpu:v100:2" + slurm_time: "01:00:00" + slurm_nodes: 1 + slurm_ntasks: 2 + slurm_cpus_per_task: 8 + slurm_container_image: "docker://higherordermethods/self:$${BUILDKITE_BUILD_NUMBER}-x86-cuda124-sm70" + agents: + queue: "galapagos" + + - label: ":rocket: Push Release Image (x86-cuda124-sm70)" + key: "push-release-sm70" + depends_on: "test-release-sm70" + command: | + docker push higherordermethods/self:$${BUILDKITE_BUILD_NUMBER}-x86-cuda124-sm70 + docker push higherordermethods/self:latest-x86-cuda124-sm70 + env: + slurm_nodelist: "oram" + agents: + queue: "galapagos" + + # ---- x86 CPU-only Release ---- + - label: ":docker: Build Release Image (x86)" + key: "docker-build-x86" + command: | + SELFISH_IMAGE="higherordermethods/selfish:latest-x86" + docker pull "$${SELFISH_IMAGE}" + SELFISH_SHA=$$(docker inspect --format='{{index .RepoDigests 0}}' "$${SELFISH_IMAGE}" | cut -d@ -f2) + docker build \ + --build-arg SELFISH_IMAGE="$${SELFISH_IMAGE}" \ + --build-arg SELFISH_SHA="$${SELFISH_SHA}" \ + -t higherordermethods/self:$${BUILDKITE_BUILD_NUMBER}-x86 \ + -t higherordermethods/self:latest-x86 \ + -f docker/x86/Dockerfile . + env: + slurm_nodelist: "oram" + agents: + queue: "galapagos" + + - label: ":test_tube: Test Release Image (x86)" + key: "test-release-x86" + depends_on: "docker-build-x86" + command: | + source /opt/spack-environment/activate.sh + ctest --test-dir /opt/self/build --output-on-failure + env: + slurm_partition: "main" + slurm_time: "01:00:00" + slurm_nodes: 1 + slurm_ntasks: 2 + slurm_cpus_per_task: 8 + slurm_container_image: "docker://higherordermethods/self:$${BUILDKITE_BUILD_NUMBER}-x86" + agents: + queue: "galapagos" + + - label: ":rocket: Push Release Image (x86)" + key: "push-release-x86" + depends_on: "test-release-x86" + command: | + docker push higherordermethods/self:$${BUILDKITE_BUILD_NUMBER}-x86 + docker push higherordermethods/self:latest-x86 + env: + slurm_nodelist: "oram" + agents: + queue: "galapagos" diff --git a/.buildkite/release-builds.yml b/.buildkite/release-builds.yml new file mode 100644 index 00000000..7b6ef92b --- /dev/null +++ b/.buildkite/release-builds.yml @@ -0,0 +1,104 @@ +steps: + # ---- AMD MI210 (gfx90a) Release ---- + - label: ":docker: Build Release Image (x86-rocm643-gfx90a)" + key: "docker-build-gfx90a" + depends_on: "test-mi210" + command: | + SELFISH_IMAGE="higherordermethods/selfish:latest-x86-rocm643-gfx90a" + docker pull "$${SELFISH_IMAGE}" + SELFISH_SHA=$$(docker inspect --format='{{index .RepoDigests 0}}' "$${SELFISH_IMAGE}" | cut -d@ -f2) + docker build \ + --build-arg SELFISH_IMAGE="$${SELFISH_IMAGE}" \ + --build-arg SELFISH_SHA="$${SELFISH_SHA}" \ + -t higherordermethods/self:$${BUILDKITE_BUILD_NUMBER}-x86-rocm643-gfx90a \ + -f docker/x86_gfx90a/Dockerfile . + env: + slurm_nodelist: "oram" + agents: + queue: "galapagos" + + - label: ":test_tube: Test Release Image (x86-rocm643-gfx90a)" + key: "test-release-gfx90a" + depends_on: "docker-build-gfx90a" + command: | + source /opt/spack-environment/activate.sh + ctest --test-dir /opt/self/build --output-on-failure + env: + slurm_partition: "main" + slurm_gres: "gpu:mi210:2" + slurm_time: "01:00:00" + slurm_nodes: 1 + slurm_ntasks: 2 + slurm_cpus_per_task: 8 + slurm_container_image: "docker://higherordermethods/self:$${BUILDKITE_BUILD_NUMBER}-x86-rocm643-gfx90a" + agents: + queue: "galapagos" + + # ---- NVIDIA V100 (sm70) Release ---- + - label: ":docker: Build Release Image (x86-cuda124-sm70)" + key: "docker-build-sm70" + depends_on: "test-v100" + command: | + SELFISH_IMAGE="higherordermethods/selfish:latest-x86-cuda124-sm70" + docker pull "$${SELFISH_IMAGE}" + SELFISH_SHA=$$(docker inspect --format='{{index .RepoDigests 0}}' "$${SELFISH_IMAGE}" | cut -d@ -f2) + docker build \ + --build-arg SELFISH_IMAGE="$${SELFISH_IMAGE}" \ + --build-arg SELFISH_SHA="$${SELFISH_SHA}" \ + -t higherordermethods/self:$${BUILDKITE_BUILD_NUMBER}-x86-cuda124-sm70 \ + -f docker/x86_sm70/Dockerfile . + env: + slurm_nodelist: "oram" + agents: + queue: "galapagos" + + - label: ":test_tube: Test Release Image (x86-cuda124-sm70)" + key: "test-release-sm70" + depends_on: "docker-build-sm70" + command: | + source /opt/spack-environment/activate.sh + ctest --test-dir /opt/self/build --output-on-failure + env: + slurm_partition: "main" + slurm_gres: "gpu:v100:2" + slurm_time: "01:00:00" + slurm_nodes: 1 + slurm_ntasks: 2 + slurm_cpus_per_task: 8 + slurm_container_image: "docker://higherordermethods/self:$${BUILDKITE_BUILD_NUMBER}-x86-cuda124-sm70" + agents: + queue: "galapagos" + + # ---- x86 CPU-only Release ---- + - label: ":docker: Build Release Image (x86)" + key: "docker-build-x86" + depends_on: "test-x86-cpu" + command: | + SELFISH_IMAGE="higherordermethods/selfish:latest-x86" + docker pull "$${SELFISH_IMAGE}" + SELFISH_SHA=$$(docker inspect --format='{{index .RepoDigests 0}}' "$${SELFISH_IMAGE}" | cut -d@ -f2) + docker build \ + --build-arg SELFISH_IMAGE="$${SELFISH_IMAGE}" \ + --build-arg SELFISH_SHA="$${SELFISH_SHA}" \ + -t higherordermethods/self:$${BUILDKITE_BUILD_NUMBER}-x86 \ + -f docker/x86/Dockerfile . + env: + slurm_nodelist: "oram" + agents: + queue: "galapagos" + + - label: ":test_tube: Test Release Image (x86)" + key: "test-release-x86" + depends_on: "docker-build-x86" + command: | + source /opt/spack-environment/activate.sh + ctest --test-dir /opt/self/build --output-on-failure + env: + slurm_partition: "main" + slurm_time: "01:00:00" + slurm_nodes: 1 + slurm_ntasks: 2 + slurm_cpus_per_task: 8 + slurm_container_image: "docker://higherordermethods/self:$${BUILDKITE_BUILD_NUMBER}-x86" + agents: + queue: "galapagos" diff --git a/.buildkite/x86-cpu-debug-tests.yml b/.buildkite/x86-cpu-debug-tests.yml new file mode 100644 index 00000000..e8fe9909 --- /dev/null +++ b/.buildkite/x86-cpu-debug-tests.yml @@ -0,0 +1,79 @@ +steps: + - label: ":cmake: Build x86 CPU (Coverage)" + key: "build-x86-cpu" + command: | + source /opt/spack-environment/activate.sh + export WORKSPACE=/workspace + mkdir -p /workspace/build + cd /workspace/build + FC=gfortran cmake -DCMAKE_INSTALL_PREFIX=/workspace/opt/self \ + -DCMAKE_BUILD_TYPE="coverage" \ + -DSELF_ENABLE_GPU=OFF \ + -DSELF_ENABLE_TESTING=ON \ + -DSELF_ENABLE_EXAMPLES=ON \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ + /workspace/ + make -j + lcov --capture --initial \ + --directory /workspace/build/src/ \ + --output-file /workspace/initial.info + env: + slurm_partition: "main" + slurm_time: "01:00:00" + slurm_nodes: 1 + slurm_ntasks: 2 + slurm_cpus_per_task: 8 + slurm_container_image: "docker://higherordermethods/selfish:latest-x86" + agents: + queue: "galapagos" + + - label: ":test_tube: Test x86 CPU (Coverage)" + key: "test-x86-cpu" + depends_on: "build-x86-cpu" + command: | + source /opt/spack-environment/activate.sh + ctest --test-dir /workspace/build --output-on-failure + env: + slurm_partition: "main" + slurm_time: "01:00:00" + slurm_nodes: 1 + slurm_ntasks: 2 + slurm_cpus_per_task: 8 + slurm_container_image: "docker://higherordermethods/selfish:latest-x86" + agents: + queue: "galapagos" + + - label: ":coverage: Coverage x86 CPU" + key: "coverage-x86-cpu" + depends_on: "test-x86-cpu" + command: | + source /opt/spack-environment/activate.sh + lcov --capture \ + --directory /workspace/build/src/ \ + --output-file /workspace/ctest-capture.info + lcov --add-tracefile /workspace/initial.info \ + --add-tracefile /workspace/ctest-capture.info \ + --output-file /workspace/coverage.info + env: + slurm_partition: "main" + slurm_time: "01:00:00" + slurm_nodes: 1 + slurm_ntasks: 2 + slurm_cpus_per_task: 8 + slurm_container_image: "docker://higherordermethods/selfish:latest-x86" + agents: + queue: "galapagos" + + - label: ":codecov: Upload Coverage (x86 CPU)" + key: "upload-coverage-x86-cpu" + depends_on: "coverage-x86-cpu" + command: | + curl -Os https://uploader.codecov.io/latest/linux/codecov + chmod +x codecov + ./codecov -t "$${CODECOV_TOKEN}" \ + -f "$${BUILDKITE_BUILD_CHECKOUT_PATH}/coverage.info" \ + -F buildkite-x86-cpu + secrets: + - CODECOV_TOKEN + agents: + queue: "galapagos" diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..17b79431 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,15 @@ +.git +build/ +env/ +*.o +*.mod +*.gcno +*.gcda +*.gcov +*.info +*.sif +*.out +*.err +*.log +.vscode/ +.spack-env diff --git a/docker/x86/Dockerfile b/docker/x86/Dockerfile new file mode 100644 index 00000000..b20814dc --- /dev/null +++ b/docker/x86/Dockerfile @@ -0,0 +1,23 @@ +ARG SELFISH_IMAGE=higherordermethods/selfish:latest-x86 +FROM ${SELFISH_IMAGE} + +ARG SELFISH_SHA="" +LABEL org.opencontainers.image.base.name="${SELFISH_IMAGE}" +LABEL org.opencontainers.image.base.digest="${SELFISH_SHA}" + +COPY . /opt/self/src + +RUN source /opt/spack-environment/activate.sh && \ + mkdir -p /opt/self/build && \ + cd /opt/self/build && \ + FC=gfortran cmake \ + -DCMAKE_INSTALL_PREFIX=/opt/self/install \ + -DCMAKE_BUILD_TYPE=Release \ + -DSELF_ENABLE_GPU=OFF \ + -DSELF_ENABLE_TESTING=ON \ + -DSELF_ENABLE_EXAMPLES=ON \ + /opt/self/src && \ + make -j$(nproc) && \ + make install + +WORKDIR /opt/self/build diff --git a/docker/x86_gfx90a/Dockerfile b/docker/x86_gfx90a/Dockerfile new file mode 100644 index 00000000..c7df3157 --- /dev/null +++ b/docker/x86_gfx90a/Dockerfile @@ -0,0 +1,26 @@ +ARG SELFISH_IMAGE=higherordermethods/selfish:latest-x86-rocm643-gfx90a +FROM ${SELFISH_IMAGE} + +ARG SELFISH_SHA="" +LABEL org.opencontainers.image.base.name="${SELFISH_IMAGE}" +LABEL org.opencontainers.image.base.digest="${SELFISH_SHA}" + +COPY . /opt/self/src + +RUN source /opt/spack-environment/activate.sh && \ + mkdir -p /opt/self/build && \ + cd /opt/self/build && \ + FC=gfortran cmake \ + -DCMAKE_INSTALL_PREFIX=/opt/self/install \ + -DCMAKE_BUILD_TYPE=Release \ + -DSELF_ENABLE_GPU=ON \ + -DSELF_GPU_BACKEND=HIP \ + -DSELF_ENABLE_TESTING=ON \ + -DCMAKE_HIP_ARCHITECTURES="gfx90a" \ + -DGPU_TARGETS="gfx90a" \ + -DSELF_ENABLE_EXAMPLES=ON \ + /opt/self/src && \ + make -j$(nproc) && \ + make install + +WORKDIR /opt/self/build diff --git a/docker/x86_sm70/Dockerfile b/docker/x86_sm70/Dockerfile new file mode 100644 index 00000000..f8c7d8da --- /dev/null +++ b/docker/x86_sm70/Dockerfile @@ -0,0 +1,25 @@ +ARG SELFISH_IMAGE=higherordermethods/selfish:latest-x86-cuda124-sm70 +FROM ${SELFISH_IMAGE} + +ARG SELFISH_SHA="" +LABEL org.opencontainers.image.base.name="${SELFISH_IMAGE}" +LABEL org.opencontainers.image.base.digest="${SELFISH_SHA}" + +COPY . /opt/self/src + +RUN source /opt/spack-environment/activate.sh && \ + mkdir -p /opt/self/build && \ + cd /opt/self/build && \ + FC=gfortran cmake \ + -DCMAKE_INSTALL_PREFIX=/opt/self/install \ + -DCMAKE_BUILD_TYPE=Release \ + -DSELF_ENABLE_GPU=ON \ + -DSELF_GPU_BACKEND=CUDA \ + -DSELF_ENABLE_TESTING=ON \ + -DCMAKE_CUDA_ARCHITECTURES="70" \ + -DSELF_ENABLE_EXAMPLES=ON \ + /opt/self/src && \ + make -j$(nproc) && \ + make install + +WORKDIR /opt/self/build