diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0f5283438e5..8f1de145244 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -105,7 +105,7 @@ jobs: strategy: matrix: platform: [amd64, arm64] - cuda_version: ["11.8", "12.0"] + cuda_version: ["12.6"] fail-fast: false uses: ./.github/workflows/dev_environment.yml secrets: @@ -132,7 +132,7 @@ jobs: strategy: matrix: platform: [amd64, arm64] - cuda_version: ["11.8", "12.0"] + cuda_version: ["12.6"] fail-fast: false uses: ./.github/workflows/dev_environment.yml secrets: @@ -235,7 +235,7 @@ jobs: matrix: platform: [amd64, arm64] python_version: ['3.11', '3.13'] - cuda_version: ["11.8", "12.0"] + cuda_version: ["12.6"] fail-fast: false uses: ./.github/workflows/python_wheels.yml secrets: @@ -256,7 +256,7 @@ jobs: with: cudaq_version: ${{ needs.python_wheels.outputs.cudaq_version }} python_versions: "['3.11', '3.13']" - cuda_versions: "['', '11.8', '12.0']" + cuda_versions: "['', '12.6']" wheel_artifacts: 'pycudaq-*' binaries: @@ -265,7 +265,7 @@ jobs: strategy: matrix: platform: [amd64, arm64] - cuda_version: ["11.8", "12.0"] + cuda_version: ["12.6"] fail-fast: false uses: ./.github/workflows/prebuilt_binaries.yml secrets: diff --git a/.github/workflows/config/validation_config.json b/.github/workflows/config/validation_config.json index 38d5d52c252..a5e32ff862f 100644 --- a/.github/workflows/config/validation_config.json +++ b/.github/workflows/config/validation_config.json @@ -1,14 +1,6 @@ { "python": [ - { - "version": "3.10", - "operating_systems": - [ - "ubuntu:22.04", - "fedora:42" - ] - }, { "version": "3.11", "operating_systems": @@ -55,7 +47,7 @@ "ubuntu:22.04": { "libcdev_package": "libc6-dev", - "cudart_version": "12.0", + "cudart_version": "12.6", "cuda_distribution": "ubuntu2204" }, "debian:12": @@ -67,13 +59,13 @@ "redhat/ubi9:9.6": { "libcdev_package": "glibc-devel", - "cudart_version": "12.0", + "cudart_version": "12.6", "cuda_distribution": "rhel9" }, "opensuse/leap:15.5": { "libcdev_package": "glibc-devel", - "cudart_version": "12.0", + "cudart_version": "12.6", "cuda_distribution": "opensuse15" }, "fedora:42": @@ -129,13 +121,13 @@ "ubuntu:22.04": { "libcdev_package": "libc6-dev", - "cudart_version": "12.0", + "cudart_version": "12.6", "cuda_distribution": "ubuntu2204" }, "redhat/ubi9:9.6": { "libcdev_package": "glibc-devel", - "cudart_version": "12.0", + "cudart_version": "12.6", "cuda_distribution": "rhel9" } }, diff --git a/.github/workflows/create_cache_command.yml b/.github/workflows/create_cache_command.yml index 5f9d158f0a9..c5baed43283 100644 --- a/.github/workflows/create_cache_command.yml +++ b/.github/workflows/create_cache_command.yml @@ -112,7 +112,7 @@ jobs: strategy: matrix: platform: [amd64, arm64] - cuda_version: ["11.8", "12.0"] + cuda_version: ["12.6"] fail-fast: false uses: ./.github/workflows/dev_environment.yml secrets: @@ -141,7 +141,7 @@ jobs: strategy: matrix: platform: [amd64, arm64] - cuda_version: ["11.8", "12.0"] + cuda_version: ["12.6"] fail-fast: false uses: ./.github/workflows/dev_environment.yml secrets: diff --git a/.github/workflows/deployments.yml b/.github/workflows/deployments.yml index 7fd9eba859b..2db72b2ea4c 100644 --- a/.github/workflows/deployments.yml +++ b/.github/workflows/deployments.yml @@ -205,7 +205,7 @@ jobs: # There are currently no multi-platform manylinux images available. # See https://github.com/pypa/manylinux/issues/1306. platform: ${{ fromJson(needs.metadata.outputs.platforms).ids }} - cuda_version: ["11.8", "12.0"] + cuda_version: ["12.6"] fail-fast: false uses: ./.github/workflows/dev_environment.yml secrets: @@ -237,7 +237,7 @@ jobs: strategy: matrix: platform: ${{ fromJson(needs.metadata.outputs.platforms).ids }} - cuda_version: ["11.8", "12.0"] + cuda_version: ["12.6"] fail-fast: false uses: ./.github/workflows/dev_environment.yml secrets: @@ -268,7 +268,7 @@ jobs: strategy: matrix: platform: ${{ fromJson(needs.metadata.outputs.platforms).ids }} - cuda_version: ["11.8", "12.0"] + cuda_version: ["12.6"] fail-fast: false uses: ./.github/workflows/dev_environment.yml secrets: @@ -354,7 +354,7 @@ jobs: strategy: matrix: platform: ${{ fromJson(needs.metadata.outputs.platforms).ids }} - cuda_version: ["11.8", "12.0"] + cuda_version: ["12.6"] fail-fast: false uses: ./.github/workflows/dev_environment.yml secrets: @@ -402,7 +402,7 @@ jobs: strategy: matrix: platform: ${{ fromJson(needs.metadata.outputs.platforms).ids }} - cuda_version: ["11.8", "12.0"] + cuda_version: ["12.6"] fail-fast: false uses: ./.github/workflows/docker_images.yml secrets: @@ -443,7 +443,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - cuda: ["11.8", "12.0"] + cuda: ["12.6"] environment: ghcr-deployment @@ -666,7 +666,7 @@ jobs: STITCHED_JSON='${{ needs.aggregate_stitched_images.outputs.json }}' echo "$STITCHED_JSON" | jq . - for cuda in 11.8 12.0; do + for cuda in 12.6; do cuda_major="${cuda%%.*}" artifact_name="image_cu${cuda_major}_publishing" info_file="$artifact_name.txt" @@ -718,8 +718,8 @@ jobs: strategy: matrix: platform: ${{ fromJson(needs.metadata.outputs.platforms).ids }} - python_version: ['3.10', '3.11', '3.12', '3.13'] - cuda_version: ["11.8", "12.0"] + python_version: ['3.11', '3.12', '3.13'] + cuda_version: ["12.6"] fail-fast: false uses: ./.github/workflows/python_wheels.yml secrets: @@ -738,7 +738,7 @@ jobs: strategy: matrix: platform: ${{ fromJson(needs.metadata.outputs.platforms).ids }} - cuda_version: ["11.8", "12.0"] + cuda_version: ["12.6"] fail-fast: false uses: ./.github/workflows/prebuilt_binaries.yml secrets: diff --git a/.github/workflows/docker_images.yml b/.github/workflows/docker_images.yml index 8d66855516f..f2d8a2c7e19 100644 --- a/.github/workflows/docker_images.yml +++ b/.github/workflows/docker_images.yml @@ -842,7 +842,7 @@ jobs: docker cp docs/notebook_validation.py cuda-quantum:"/home/cudaq/notebook_validation.py" # In containers without GPU support, UCX does not work properly since it is configured to work with GPU-support. # Hence, don't enforce UCX when running these tests. - docker exec cuda-quantum bash -c "python3 -m pip install pandas scipy pandas seaborn 'h5py<3.11' contfrac" + docker exec cuda-quantum bash -c "python3 -m pip install pandas scipy pandas seaborn h5py contfrac" (docker exec cuda-quantum bash -c "unset OMPI_MCA_pml && set -o pipefail && bash validate_container.sh | tee /tmp/validation.out") && passed=true || passed=false docker cp cuda-quantum:"/tmp/validation.out" /tmp/validation.out docker stop cuda-quantum diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index 0ee6ac2ebf7..b88f2c3a6ed 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -58,7 +58,6 @@ on: required: true description: 'Python version to run wheel test' options: - - '3.10' - '3.11' - '3.12' - '3.13' @@ -72,7 +71,7 @@ env: NVQC_FUNCTION_ID: 3bfa0342-7d2a-4f1b-8e81-b6608d28ca7d # :::: NGC_NVQC_DEPLOYMENT_SPEC: GFN:L40S:gl40s_1.br25_2xlarge:1:1 - python_version: '3.10' + python_version: '3.12' jobs: # We need this job purely to choose the container image values because the diff --git a/.github/workflows/nvqc_regression_tests.yml b/.github/workflows/nvqc_regression_tests.yml index dd0522cc4c7..055eeb2e723 100644 --- a/.github/workflows/nvqc_regression_tests.yml +++ b/.github/workflows/nvqc_regression_tests.yml @@ -26,7 +26,6 @@ on: required: true description: 'Python version to run wheel test' options: - - '3.10' - '3.11' - '3.12' - '3.13' @@ -35,7 +34,7 @@ on: - cron: 0 3 * * * env: - python_version: '3.10' + python_version: '3.12' jobs: # We need this job purely to choose the container image values because the diff --git a/.github/workflows/publishing.yml b/.github/workflows/publishing.yml index 0edaa6d5967..bf7476fdd6c 100644 --- a/.github/workflows/publishing.yml +++ b/.github/workflows/publishing.yml @@ -650,7 +650,7 @@ jobs: strategy: matrix: info_file: ${{ fromJson(needs.assets.outputs.python_wheels).info_files }} - python_version: ['3.10', '3.11', '3.12', '3.13'] + python_version: ['3.11', '3.12', '3.13'] fail-fast: false runs-on: ${{ (contains(matrix.info_file, 'arm') && 'linux-arm64-cpu8') || 'linux-amd64-cpu8' }} @@ -733,10 +733,10 @@ jobs: - name: Set retention days id: set_retention_days run: | - # Save the x86_64-py3.10-wheels for longer because our some of our + # Save the x86_64-py3.12-wheels for longer because our some of our # nightly jobs rely on them being present, even if we haven't done a # fresh publishing in the last 24 hours. - if [ "${{ steps.release_info.outputs.platform_arch }}" == "x86_64" ] && [ "${{ matrix.python_version }}" == "3.10" ]; then + if [ "${{ steps.release_info.outputs.platform_arch }}" == "x86_64" ] && [ "${{ matrix.python_version }}" == "3.12" ]; then echo "retention_days=7" >> $GITHUB_OUTPUT else echo "retention_days=1" >> $GITHUB_OUTPUT @@ -782,8 +782,8 @@ jobs: uses: ./.github/workflows/python_metapackages.yml with: cudaq_version: ${{ needs.assets.outputs.cudaq_version }} - python_versions: "['3.10', '3.11', '3.12', '3.13']" - cuda_versions: "['', '11.8', '12.0']" + python_versions: "['3.11', '3.12', '3.13']" + cuda_versions: "['', '12.6']" wheel_artifacts: '*-wheels' github_commit: ${{ inputs.github_commit || needs.assets.outputs.github_commit }} @@ -925,7 +925,7 @@ jobs: strategy: matrix: os_image: ['redhat/ubi8:8.10', 'ubuntu:22.04'] - cuda_version: ['11.8', '12.0'] + cuda_version: ['12.6'] fail-fast: false container: @@ -1203,7 +1203,7 @@ jobs: source validate_pycudaq.sh \ -v ${{ needs.assets.outputs.cudaq_version }} \ -i /tmp/packages -f /tmp \ - -c ${{ matrix.cuda_version }} -p 3.10 + -c ${{ matrix.cuda_version }} -p 3.12 set -e # Re-enable exit code error checking expected_dependency=cuda-quantum-cu$(echo ${{ matrix.cuda_version }} | cut -d . -f1) diff --git a/.github/workflows/python_metapackages.yml b/.github/workflows/python_metapackages.yml index 15ed0eeb7dd..87af87cf80f 100644 --- a/.github/workflows/python_metapackages.yml +++ b/.github/workflows/python_metapackages.yml @@ -8,11 +8,11 @@ on: python_versions: required: true type: string - description: Json array of the Python versions to test the packages with (e.g. ['3.10', '3.12']). + description: Json array of the Python versions to test the packages with (e.g. ['3.11', '3.12']). cuda_versions: required: true type: string - description: Json array of the CUDA versions to test the packages with (e.g. ['11.8', '12.0']). + description: Json array of the CUDA versions to test the packages with (e.g. ['12.6']). wheel_artifacts: required: true type: string diff --git a/docker/build/devdeps.Dockerfile b/docker/build/devdeps.Dockerfile index 93b1318745b..5a9e0205049 100644 --- a/docker/build/devdeps.Dockerfile +++ b/docker/build/devdeps.Dockerfile @@ -23,7 +23,7 @@ # then the toolchain will be built from source. # [Operating System] -ARG base_image=ubuntu:22.04 +ARG base_image=ubuntu:24.04 # [CUDA-Q Dependencies] FROM ${base_image} AS prereqs @@ -51,12 +51,14 @@ ENV ZLIB_INSTALL_PREFIX=/usr/local/zlib ENV OPENSSL_INSTALL_PREFIX=/usr/local/openssl ENV CURL_INSTALL_PREFIX=/usr/local/curl ENV AWS_INSTALL_PREFIX=/usr/local/aws +# TODO: eliminate the need for this +ENV PIP_BREAK_SYSTEM_PACKAGES=1 ## [Build Dependencies] RUN apt-get update && apt-get install -y --no-install-recommends \ wget git unzip \ python3-dev python3-pip && \ - python3 -m pip install --no-cache-dir numpy && \ + python3 -m pip install --no-cache-dir numpy --break-system-packages && \ apt-get autoremove -y --purge && apt-get clean && rm -rf /var/lib/apt/lists/* ADD scripts/install_toolchain.sh /cuda-quantum/scripts/install_toolchain.sh RUN source /cuda-quantum/scripts/install_toolchain.sh \ @@ -151,23 +153,21 @@ RUN apt-get update && apt-get install --no-install-recommends -y wget ca-certifi && apt-get remove -y wget ca-certificates \ && apt-get autoremove -y --purge && apt-get clean && rm -rf /var/lib/apt/lists/* ENV PATH="${PATH}:/usr/local/cmake-3.28/bin" -# We must use h5py<3.11 because 3.11 doesn't include aarch64 Linux wheels. -# https://github.com/h5py/h5py/issues/2408 RUN apt-get update && apt-get install -y --no-install-recommends \ git gdb ninja-build file lldb \ python3 python3-pip libpython3-dev \ - && python3 -m pip install --no-cache-dir \ + && python3 -m pip install --no-cache-dir --break-system-packages \ lit==18.1.4 pytest==8.2.0 numpy==1.26.4 requests==2.31.0 \ fastapi==0.111.0 uvicorn==0.29.0 pydantic==2.7.1 llvmlite==0.42.0 \ pyspelling==2.10 pymdown-extensions==10.8.1 yapf \ - scipy==1.10.1 openfermionpyscf==0.5 'h5py<3.11' \ + scipy==1.11.4 openfermionpyscf==0.5 h5py==3.12.1 \ && apt-get autoremove -y --purge && apt-get clean && rm -rf /var/lib/apt/lists/* # Install additional tools for CUDA-Q documentation generation. COPY --from=prereqs /usr/local/bin/doxygen /usr/local/bin/doxygen ENV PATH="${PATH}:/usr/local/bin" RUN apt-get update && apt-get install -y --no-install-recommends python3 python3-pip pandoc aspell aspell-en \ - && python3 -m pip install --no-cache-dir \ + && python3 -m pip install --no-cache-dir --break-system-packages \ ipython==8.15.0 pandoc==2.3 sphinx==5.3.0 sphinx_rtd_theme==1.2.0 sphinx-reredirects==0.1.2 \ sphinx-copybutton==0.5.2 sphinx_inline_tabs==2023.4.21 enum-tools[sphinx] breathe==4.34.0 \ nbsphinx==0.9.2 sphinx_gallery==0.13.0 myst-parser==1.0.0 ipykernel==6.29.4 notebook==7.3.2 \ diff --git a/docker/build/devdeps.ext.Dockerfile b/docker/build/devdeps.ext.Dockerfile index 254c61be3e4..ea8c0b86508 100644 --- a/docker/build/devdeps.ext.Dockerfile +++ b/docker/build/devdeps.ext.Dockerfile @@ -16,7 +16,7 @@ # Must be built from the repo root with: # docker build -t ghcr.io/nvidia/cuda-quantum-devdeps:ext -f docker/build/devdeps.ext.Dockerfile . -ARG cuda_version=11.8 +ARG cuda_version=12.6 ARG base_image=ghcr.io/nvidia/cuda-quantum-devdeps:gcc11-main ARG ompidev_image=ghcr.io/nvidia/cuda-quantum-devdeps:cu12-ompi-main FROM $ompidev_image AS ompibuild @@ -163,25 +163,27 @@ ENV CUDA_HOME="$CUDA_INSTALL_PREFIX" ENV CUDA_ROOT="$CUDA_INSTALL_PREFIX" ENV CUDA_PATH="$CUDA_INSTALL_PREFIX" ENV PATH="${CUDA_INSTALL_PREFIX}/lib64/:${CUDA_INSTALL_PREFIX}/bin:${PATH}" +# TODO: Eliminate the need for this +ENV PIP_BREAK_SYSTEM_PACKAGES=1 # Install cuQuantum dependencies, including cuTensor. # Install cupy version 13.4.1 RUN apt-get update && apt-get install -y --no-install-recommends \ python3 python3-pip && \ apt-get autoremove -y && apt-get clean && rm -rf /var/lib/apt/lists/* && \ - python3 -m pip install cupy-cuda$(echo $CUDA_VERSION | cut -d . -f1)x==13.4.1 cuquantum-cu$(echo $CUDA_VERSION | cut -d . -f1)~=25.06 && \ - if [ "$(python3 --version | grep -o [0-9\.]* | cut -d . -f -2)" != "3.10" ]; then \ - echo "expecting Python version 3.10"; \ + python3 -m pip install --break-system-packages cupy-cuda$(echo $CUDA_VERSION | cut -d . -f1)x==13.4.1 cuquantum-cu$(echo $CUDA_VERSION | cut -d . -f1)~=25.06 && \ + if [ "$(python3 --version | grep -o [0-9\.]* | cut -d . -f -2)" != "3.12" ]; then \ + echo "expecting Python version 3.12"; \ fi -ARG CUQUANTUM_INSTALL_PREFIX=/usr/local/lib/python3.10/dist-packages/cuquantum +ARG CUQUANTUM_INSTALL_PREFIX=/usr/local/lib/python3.12/dist-packages/cuquantum ENV CUQUANTUM_INSTALL_PREFIX="$CUQUANTUM_INSTALL_PREFIX" ENV CUQUANTUM_ROOT="$CUQUANTUM_INSTALL_PREFIX" ENV CUQUANTUM_PATH="$CUQUANTUM_INSTALL_PREFIX" ENV LD_LIBRARY_PATH="$CUQUANTUM_INSTALL_PREFIX/lib:$LD_LIBRARY_PATH" ENV CPATH="$CUQUANTUM_INSTALL_PREFIX/include:$CPATH" -ARG CUTENSOR_INSTALL_PREFIX=/usr/local/lib/python3.10/dist-packages/cutensor +ARG CUTENSOR_INSTALL_PREFIX=/usr/local/lib/python3.12/dist-packages/cutensor ENV CUTENSOR_INSTALL_PREFIX="$CUTENSOR_INSTALL_PREFIX" ENV CUTENSOR_ROOT="$CUTENSOR_INSTALL_PREFIX" ENV LD_LIBRARY_PATH="$CUTENSOR_INSTALL_PREFIX/lib:$LD_LIBRARY_PATH" diff --git a/docker/build/devdeps.ompi.Dockerfile b/docker/build/devdeps.ompi.Dockerfile index 3a408ee7cdf..17be70db6d6 100644 --- a/docker/build/devdeps.ompi.Dockerfile +++ b/docker/build/devdeps.ompi.Dockerfile @@ -15,8 +15,8 @@ # Must be built from the repo root with: # docker build -t ghcr.io/nvidia/cuda-quantum-devdeps:ompi -f docker/build/devdeps.ompi.Dockerfile . -ARG cuda_version=12.0 -FROM nvidia/cuda:${cuda_version}.0-devel-ubuntu22.04 +ARG cuda_version=12.6 +FROM nvidia/cuda:${cuda_version}.0-devel-ubuntu24.04 SHELL ["/bin/bash", "-c"] ARG DEBIAN_FRONTEND=noninteractive ARG cuda_version @@ -26,6 +26,7 @@ ARG TARGETARCH ENV CUDA_INSTALL_PREFIX=/usr/local/cuda-${CUDA_VERSION} ENV COMMON_COMPILER_FLAGS="-march=x86-64-v3 -mtune=generic -O2 -pipe" ENV COMMON_COMPILER_FLAGS_ARM="-march=armv8-a -mtune=generic -O2 -pipe" +ENV PIP_BREAK_SYSTEM_PACKAGES=1 # 1 - Install basic tools needed for the builds @@ -33,7 +34,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ gcc g++ gfortran python3 python3-pip \ libcurl4-openssl-dev libssl-dev liblapack-dev libpython3-dev \ bzip2 make sudo vim curl git wget \ - && pip install --no-cache-dir numpy \ + && pip install --no-cache-dir numpy --break-system-packages \ && apt-get autoremove -y --purge && apt-get clean && rm -rf /var/lib/apt/lists/* # 2 - Install SLURM PMI2 version 21.08.8 @@ -80,12 +81,12 @@ RUN apt-get update -y && apt-get install -y --no-install-recommends \ ENV CPATH="$GDRCOPY_INSTALL_PREFIX/include:$CPATH" ENV LIBRARY_PATH="$GDRCOPY_INSTALL_PREFIX/lib64:$LIBRARY_PATH" -# 5 - Install UCX version v1.13.1 +# 5 - Install UCX version v1.16.0 ENV UCX_INSTALL_PREFIX=/usr/local/ucx RUN mkdir -p /var/tmp && cd /var/tmp \ && git clone https://github.com/openucx/ucx.git ucx && cd /var/tmp/ucx \ - && git checkout v1.13.1 \ + && git checkout v1.16.0 \ && ./autogen.sh \ && export common_flags=$([ "$TARGETARCH" == "arm64" ] && echo "$COMMON_COMPILER_FLAGS_ARM" || echo "$COMMON_COMPILER_FLAGS") \ && CC=gcc CFLAGS="$common_flags" \ diff --git a/python/metapackages/pyproject.toml b/python/metapackages/pyproject.toml index a6c2c4d1f33..92ef07dc263 100644 --- a/python/metapackages/pyproject.toml +++ b/python/metapackages/pyproject.toml @@ -37,10 +37,8 @@ Documentation = "https://nvidia.github.io/cuda-quantum" Repository = "https://github.com/NVIDIA/cuda-quantum" Releases = "https://nvidia.github.io/cuda-quantum/latest/releases.html" -# We must use h5py<3.11 because 3.11 doesn't include aarch64 Linux wheels. -# https://github.com/h5py/h5py/issues/2408 [project.optional-dependencies] -chemistry = [ "scipy==1.10.1", "openfermionpyscf==0.5", "h5py<3.11" ] +chemistry = [ "scipy==1.10.1", "openfermionpyscf==0.5", "h5py==3.12.1" ] visualization = [ "qutip<5" , "matplotlib>=3.5" ] [build-system]