Skip to content

Commit

Permalink
Update Linux wheels to use manylinux_2_28 (#667)
Browse files Browse the repository at this point in the history
* update version

* update gcc and containers for linux_x86_64

* trigger CIs

* test Engine

* try removing podman

* try alternative path for docker

* y

* priviledged container

* aarch64

* build wheels

* dnf->yum

* install dependencies (apt)

* update container

* update and build ppc64le wheels

* update and build x86_64_cuda wheels

* update config-manager

* add install dnf-utils

* Auto update version

* update dev version

* move dnf-utils

* set cuda repository to AlmaLinux

* make gcc 12

* Auto update version

* trigger ci

* upload artifacts

* Update .github/workflows/wheel_linux_x86_64.yml

Co-authored-by: Ali Asadi <[email protected]>

* Update .github/workflows/wheel_linux_x86_64.yml

Co-authored-by: Raul Torres <[email protected]>

* Auto update version from '0.36.0-dev29' to '0.36.0-dev36'

* fix source for linux_x86_64_cuda

* Auto update version from '0.36.0-dev37' to '0.36.0-dev36'

* Update Changelog

* update release candidate version

* run agains pennylane rc

* update relese cadidate version

* Increase tolerance for a flaky test (test_single_return_value)

* format

* Update `LightningBaseFallBack` to raise an error instead of falling back to default.qubit (#689)

* Initial commit.

* Update changelog

* Auto update version

* trigger ci

* Unused import.

* Auto update version

* trigger ci

* Fix imports.

* Auto update version

* Fix LightningException

* make format

* Auto update version from '0.36.0-dev34' to '0.36.0-dev35'

* Auto update version from '0.36.0-dev35' to '0.36.0-dev36'

* Auto update version from '0.36.0-dev36' to '0.36.0-dev37'

* Make python -m pip install consistent.

* Fix ImportError

* Auto update version from '0.36.0-dev37' to '0.36.0-dev38'

* --force-reinstall

* Auto update version from '0.36.0-dev38' to '0.36.0-dev39'

* Remove --force-reinstall

* Auto update version from '0.36.0-dev39' to '0.36.0-dev40'

* Auto update version from '0.36.0-dev42' to '0.36.0-dev43'

* Auto update version from '0.36.0-dev43' to '0.36.0-dev44'

* Spec CMAKE_CXX_COMPILER

* Fix quotes.

* Remove quotes

* Hardcode g++-11

* use env.COMPILER

* which g++

* Revert

* Downgrade pip

* Pin libomp.

* Revert wheel_linux

* Upload artifacts.

* Comment upload trigger

* Install pip==23

* Revert libomp

* try testing outside cibuildwheel

* yum install devtools

* yum install devtools

* Do not install python

* Revert changes

* Don't editable install.

* Not edit install

* Not edit install

* Fix cov path

* Explicit mcm tests path

* Fix qml.QuantumFunctionError error messages.

---------

Co-authored-by: Dev version update bot <github-actions[bot]@users.noreply.github.com>
Co-authored-by: ringo-but-quantum <[email protected]>
Co-authored-by: AmintorDusko <[email protected]>

* trigger CIs

* Introduce pytest-splits (#696)

* Try update lightning CI paths

* Auto update version

* Update kokkos tests to trigger on changes to pl core

* Auto update version

* Split tests_linux.yml into cpp/python.

* Auto update version from '0.36.0-dev36' to '0.36.0-dev38'

* Split GPU tests into cpp/python.

* Split MPI-GPU tests into cpp/python.

* Fix LGPU triggers.

* Remove python tests from LGPU-C++.

* Remove upload-to-codecov-linux-cpp from LGPUMPI tests.

* Rename test workflows.

* Update changelog.

* Change group names.

* Use paths-ignore to simplify workflow paths

* Auto update version from '0.36.0-dev38' to '0.36.0-dev39'

* Fix test names.

* you may only define one of `paths` and `paths-ignore` for a single event

* Fix formatting

* Auto update version from '0.36.0-dev39' to '0.36.0-dev40'

* Change to paths-ignore in no-bin tests.

* Auto update version from '0.36.0-dev40' to '0.36.0-dev41'

* trigger ci

* Change error message.

* Split build/test jobs.

* Revert pennylane_lightning/lightning_kokkos/lightning_kokkos.py

* Fix setup.py command

* Comment workflows

* Comment pull_request:

* Copy wheels to github.workspace /wheels

* SKIP_COMPILATION=True

* Revert SKIP_COMPILATION=True

* Remove duplicate python actions.

* Split LQ-test into 5 groups.

* Update requirements-dev.txt

* 2 groups

* 1 group

* 7 groups

* Refactor LKokos tests

* Auto update version from '0.36.0-dev42' to '0.36.0-dev43'

* Fix cache id

* Fix needs

* Remove all builds

* put back CMAKE_PREFIX_PATH

* install fake lightning

* Fix compat paths

* Auto update version from '0.36.0-dev42' to '0.36.0-dev43'

* Revert changes.

* Update changelog

* trigger ci

* build_and_cache_Kokkos_linux.yml not concurrent.

* Remove C++ tests from compat tests (skipped anyways).

* Use ${{ github.ref }}-${{ github.event }}-${{ inputs.lightning-version }}-${{ inputs.pennylane-version }} for concurrency groups.

* PL_BACKEND: ${{ matrix.pl_backend }}

* Update changelog

* Install wheel package.

* Auto update version from '0.36.0-dev43' to '0.36.0-dev44'

* Install scipy wheel in one place.

* Comment job triggers.

* Add LK[cpu] est durations.

* trigger ci

* Use sha independent keys.

* trigger ci

* build_and_cache_Kokkos

* Change LK keys

* ls -l

* Install version nonce

* Do not skip comp.

* Trade ref for sha in key

* Install after PL

* ref ==> sha

* Reorder

* Try LQ workflows.

* Use actions/setup-python

* Revert triggers.

* Provide correct cov path.

* Revert pennylane_lightning/core/src/utils/config.h

* LK uses 5 groups.

* Restore wheels to main

* main/wheels

* Revert cache paths

* Fix ls -l

* fail-on-cache-miss: true

* Introduce env.GITHUB_WORKSPACE

* Use artifacts

* Fix paths

* No ls -l

* Download to github.workspace

* fix wheel name

* WHEEL_NAME

* Add blas.

* Use outputs.

* Send wheel name

* Fix artifact name

* Fix name

* Use WHEEL_NAME var

* artifacts kokkos

* fix wheel name

* Restore bins.

* Clean up

* Split Linux CPU python tests into 2.

* Fix compat workflows.

* Split format and tidy workflows.

* fix lkcpu

* fix concurrency group

* Do not use editable installs.

* Split full kokkos tests except unitary_correct

* Upload LK test durations.

* duration-paths

* Unique test_durations

* Unique test_durations

* Unique test_durations

* Fix path

* Update python_lightning_kokkos_test_durations

* Remove obsolete all and SERIAL tests.

* Update changelog

* Creating the `LightningTensor` device class based on the new API (#671)

* empty commit (triggering CI)

* Auto update version

* Definition of the two front-end classes

* adding the `lightning_tensor` string to the supported backends in `setup.py`

* adding `__init__.py` file to directly import the `lightning_tensor` device class

* re-naming file

* Auto update version

* Creating the first prototype of initial MPS state tensor using `quimb`

* providing the `backend`, `method` parameters and making `wires` optional

* Changing names and structure

* Auto update version

* adding method required by the new device API design

* Auto update version

* using the `kwargs` parameter in `LightningTensor` and `CircuitMPS` in `quimb`

* taking some further inputs from the new device API

* Perhaps decided the overall structure of `LIghtningTensor`

* Auto update version

* adding docs to methods

* temporary changes so that `pylint` does not complain at this stage

* running `isort`

* re-running formatter after `isort`

* re-running formatter after `isort`

* Applying suggested formatting change from CI

* adding tmp unit tests

* Adding `quimb` in `requirements.txt`

* runing `isort` on mps test

* removing `quimb` from requirement and deleting unit tests for `lightning.tensor`

* Auto update version

* re-inserting unit tests with an additional `yml` file

* running isort on quimb test

* changing name of yml file

* preventing error in import

* updating yml file

* inserting `quimb` package in requirements-dev

* strange error with `quimb`

* strange error with `quimb`

* specifying scipy version

* removing installation of scipy from yml file

* removing the new `yml` file

* testing if tests are tested

* Covering all lines in tests

* forgot final line for formatter

* Python formatter on CI complaints

* covering missing lines

* formatter on CI complaints

* Trying not to skip test if Cpp is enabled

* skipping tests if Cpp is enabled

* removing the only line not covered by tests so far

* Auto update version

* Applying suggestions from code review and making the `state` attribute private (new API design)

* Python formatter

* removing params from `QuimbMPS`

* Auto update version

* removing `**kwargs` from `QuimbMPS`

* removing unnecessary param at this stage

* covering test line

* formatter...

* removing param description

* Making `pylint` happy

* forgot new arg in test

* Updating base class and `preprocess` function

* Updating `LightningTensor` class with new names from more advanced PR

* Auto update version

* Auto update version

* Triggering CI

* Auto update version

* Trying to remove pin from `quimb` in `requirements.dev`

* Auto update version

* Auto update version

* Removing infos on derivatives and using config options to pass parameters to interface

* Usual `pylint` failures

* Trying to solve formatting errors

* typo in docstring

* Sunday update: improved docstrings and structure

* Removing method that was supposed to be in next PR

* removing old TODO comment

* Removing changes from the `setup.py` file

* restoring previous format to `setup.py`

* Auto update version from '0.36.0-dev34' to '0.36.0-dev41'

* Auto update version from '0.36.0-dev40' to '0.36.0-dev41'

* Removing kwargs as suggested from code review

* Addressing comments from CR

* Skipping tests if CPP binary is available

* Auto update version from '0.36.0-dev42' to '0.36.0-dev43'

* Auto update version from '0.36.0-dev43' to '0.36.0-dev44'

* Restoring name in changelog (?)

* Increasing time limit for Python tests

* Applying suggestions from code review

---------

Co-authored-by: Dev version update bot <github-actions[bot]@users.noreply.github.com>
Co-authored-by: ringo-but-quantum <[email protected]>

* Increase tolerance for a flaky test (test_single_return_value) (#703)

* update dev version

* increase tolerance

* update changelog

* trigger CIs

* Auto update version from '0.36.0-dev44' to '0.36.0-dev45'

---------

Co-authored-by: ringo-but-quantum <[email protected]>

* Auto update version from '0.36.0-dev45' to '0.36.0-dev46'

* Remove LTensor stuff

* Update changelog

* Revert requirements-dev.txt

* trigger ci

* Update python_lightning_kokkos_test_durations

* Restore 'all' tests in tests_lkcuda_python.yml

* Fix durations paths.

* Try --splitting-algorithm=least_duration

* Try no -n auto lkcpu tests

* One last test.

---------

Co-authored-by: Rashid N H M <[email protected]>
Co-authored-by: Dev version update bot <github-actions[bot]@users.noreply.github.com>
Co-authored-by: ringo-but-quantum <[email protected]>
Co-authored-by: Pietropaolo Frisoni <[email protected]>
Co-authored-by: Amintor Dusko <[email protected]>

* Update changelog (#706)

* Use wire order specified on instantiation (#705)

* use map wires instead of map_to_standard_wires

* oops

* Update .github/CHANGELOG.md

* black

* Trigger CIs

* add test

* black on tests

* Update .github/CHANGELOG.md

---------

Co-authored-by: AmintorDusko <[email protected]>
Co-authored-by: Ali Asadi <[email protected]>

* Update wire order support for probabilities (#707)

* Begin expansion of probs tests

* Update tests to exhaustively compute probs with wires

* Update all tests in LQ Meas to use CHECK instead of REQUIRES for better signal of failures

* Add Jet Permuter

* Add noisy functionality

* Fix permutation ordering

* Update changelog

* Fix wrong ordering in probs tests

* Add recommendation from apache flink to purge azure dirs

* Forbid out of order indices for probs with LK and LG in CPP layer

* Remove MSFT tools from GH Actions

* Just try to remove dotnet

* List opt hostedtoolcache

* Remove packages from /opt/hostedtoolcache

* Fix missing test hit

* Forbid and remove broken tests from LK probs ordering

* Fix clang-tidy isms

* Ensure libopenblas is not broken from failed apt pull with dev

* Appease GH Action

* Full remove GH action modifier step due to unexplained failures

* Add bidreictional wire validation for LGPU CPP layer

* Clang-tidy warning fix

* Appease CT

* Update JET license agreement

* Sync version

* pacify CodeFactor

* make CodeFactor ignore all JET code

* trigger ci

* trigger ci

* build wheels for test

* remove Win LKokkos upload-pypi [skip-ci]

* [skip ci]

* trigger wheels CIs with Release event

* update version

* fix upload wheels artifact for release

* target pennylane master

* Version bump CHANGELOG

* Auto update version from '' to '0.36.0-dev48'

* version bump to dev0

* Auto update version from '0.37.0-dev0' to '0.36.0-dev48'

* Update version

* Auto update version from '0.37.0-dev0' to '0.36.0-dev48'

* Update pennylane_lightning/core/_version.py

* update changelog

* Update .github/workflows/wheel_linux_aarch64.yml

* Update .github/workflows/wheel_linux_ppc64le.yml

---------

Co-authored-by: Dev version update bot <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Ali Asadi <[email protected]>
Co-authored-by: Raul Torres <[email protected]>
Co-authored-by: ringo-but-quantum <[email protected]>
Co-authored-by: Vincent Michaud-Rioux <[email protected]>
Co-authored-by: Rashid N H M <[email protected]>
Co-authored-by: Pietropaolo Frisoni <[email protected]>
Co-authored-by: Christina Lee <[email protected]>
Co-authored-by: Lee James O'Riordan <[email protected]>
Co-authored-by: Vincent Michaud-Rioux <[email protected]>
  • Loading branch information
11 people authored and multiphaseCFD committed May 7, 2024
1 parent b6aa4cd commit cc2688e
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 45 deletions.
5 changes: 5 additions & 0 deletions .github/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@

### Improvements

* Update Linux wheels to use manylinux_2_28 images.
[(#667)](https://github.com/PennyLaneAI/pennylane-lightning/pull/667)

### Documentation

### Bug fixes
Expand All @@ -14,6 +17,8 @@

This release contains contributions from (in alphabetical order):

Amintor Dusko

---

# Release 0.36.0
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/wheel_linux_aarch64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
arch: [aarch64]
exec_model: ${{ fromJson(needs.set_wheel_build_matrix.outputs.exec_model) }}
kokkos_version: ${{ fromJson(needs.set_wheel_build_matrix.outputs.kokkos_version) }}
container_img: ["quay.io/pypa/manylinux2014_aarch64"]
container_img: ["quay.io/pypa/manylinux_2_28_aarch64"]
timeout-minutes: 45
name: Kokkos core (${{ matrix.exec_model }}::${{ matrix.arch }})
runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -91,7 +91,7 @@ jobs:
cibw_build: ${{ fromJson(needs.set_wheel_build_matrix.outputs.python_version) }}
exec_model: ${{ fromJson(needs.set_wheel_build_matrix.outputs.exec_model) }}
kokkos_version: ${{ fromJson(needs.set_wheel_build_matrix.outputs.kokkos_version) }}
container_img: ["quay.io/pypa/manylinux2014_aarch64"]
container_img: ["quay.io/pypa/manylinux_2_28_aarch64"]
timeout-minutes: 45
name: ${{ matrix.os }}::${{ matrix.arch }} - ${{ matrix.pl_backend }} (Python ${{ fromJson('{ "cp39-*":"3.9","cp310-*":"3.10","cp311-*":"3.11", "cp312-*":"3.12" }')[matrix.cibw_build] }})
runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -135,7 +135,7 @@ jobs:
CIBW_ENVIRONMENT: PL_BACKEND="${{ matrix.pl_backend }}" CMAKE_ARGS="-DENABLE_LAPACK=OFF"

CIBW_MANYLINUX_AARCH64_IMAGE: manylinux2014
CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_28

CIBW_BUILD_VERBOSITY: 3

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/wheel_linux_ppc64le.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
arch: [ppc64le]
exec_model: ${{ fromJson(needs.set_wheel_build_matrix.outputs.exec_model) }}
kokkos_version: ${{ fromJson(needs.set_wheel_build_matrix.outputs.kokkos_version) }}
container_img: ["quay.io/pypa/manylinux2014_ppc64le"]
container_img: ["quay.io/pypa/manylinux_2_28_ppc64le"]
timeout-minutes: 45
name: Kokkos core (${{ matrix.exec_model }}::${{ matrix.arch }})
runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -91,7 +91,7 @@ jobs:
cibw_build: ${{fromJson(needs.set_wheel_build_matrix.outputs.python_version)}}
exec_model: ${{ fromJson(needs.set_wheel_build_matrix.outputs.exec_model) }}
kokkos_version: ${{ fromJson(needs.set_wheel_build_matrix.outputs.kokkos_version) }}
container_img: ["quay.io/pypa/manylinux2014_ppc64le"]
container_img: ["quay.io/pypa/manylinux_2_28_ppc64le"]
timeout-minutes: 45
name: ${{ matrix.os }}::${{ matrix.arch }} - ${{ matrix.pl_backend }} (Python ${{ fromJson('{"cp39-*":"3.9","cp310-*":"3.10","cp311-*":"3.11", "cp312-*":"3.12"}')[matrix.cibw_build] }})
runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -134,7 +134,7 @@ jobs:
CIBW_ENVIRONMENT: PL_BACKEND="${{ matrix.pl_backend }}" CMAKE_ARGS="-DENABLE_LAPACK=OFF"

CIBW_MANYLINUX_PPC64LE_IMAGE: manylinux2014
CIBW_MANYLINUX_PPC64LE_IMAGE: manylinux_2_28

CIBW_BUILD_VERBOSITY: 3

Expand Down
42 changes: 22 additions & 20 deletions .github/workflows/wheel_linux_x86_64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ name: Wheel::Linux::x86_64
# **Who does it impact**: Wheels to be uploaded to PyPI.

env:
GCC_VERSION: 11
GCC_VERSION: 13

on:
pull_request:
Expand Down Expand Up @@ -44,7 +44,7 @@ jobs:
matrix:
exec_model: ${{ fromJson(needs.set_wheel_build_matrix.outputs.exec_model) }}
kokkos_version: ${{ fromJson(needs.set_wheel_build_matrix.outputs.kokkos_version) }}
container_img: ["quay.io/pypa/manylinux2014_x86_64"]
container_img: ["quay.io/pypa/manylinux_2_28_x86_64"]
timeout-minutes: 30
name: Kokkos core (${{ matrix.exec_model }})
runs-on: ${{ needs.determine_runner.outputs.runner_group }}
Expand All @@ -62,12 +62,12 @@ jobs:
if: ${{ (matrix.container_img == 'ubuntu-latest') && (steps.kokkos-cache.outputs.cache-hit != 'true') }}
run: |
apt-get update && DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y -q install cmake gcc-$GCC_VERSION g++-$GCC_VERSION ninja-build git
echo "COMPILER=g++-11" >> $GITHUB_ENV
echo "COMPILER=g++-13" >> $GITHUB_ENV
- name: Install dependencies (CentOS)
if: ${{ (matrix.container_img == 'quay.io/pypa/manylinux2014_x86_64') && (steps.kokkos-cache.outputs.cache-hit != 'true') }}
- name: Install dependencies (AlmaLinux)
if: ${{ (matrix.container_img == 'quay.io/pypa/manylinux_2_28_x86_64') && (steps.kokkos-cache.outputs.cache-hit != 'true') }}
run: |
yum update -y && yum install -y cmake ninja-build
dnf update -y && dnf install -y cmake ninja-build
echo "COMPILER=g++" >> $GITHUB_ENV
- name: Clone Kokkos libs
Expand Down Expand Up @@ -104,11 +104,13 @@ jobs:
cibw_build: ${{ fromJson(needs.set_wheel_build_matrix.outputs.python_version) }}
exec_model: ${{ fromJson(needs.set_wheel_build_matrix.outputs.exec_model) }}
kokkos_version: ${{ fromJson(needs.set_wheel_build_matrix.outputs.kokkos_version) }}
container_img: ["quay.io/pypa/manylinux2014_x86_64"]
container_img: ["quay.io/pypa/manylinux_2_28_x86_64"]
timeout-minutes: 30
name: Linux::${{ matrix.arch }} - ${{ matrix.pl_backend }} (Python ${{ fromJson('{ "cp39-*":"3.9","cp310-*":"3.10","cp311-*":"3.11","cp312-*":"3.12" }')[matrix.cibw_build] }})
runs-on: ${{ needs.determine_runner.outputs.runner_group }}
container: ${{ matrix.container_img }}
container:
image: ${{ matrix.container_img }}
options: --privileged

steps:
- name: Restoring cached dependencies
Expand All @@ -127,18 +129,18 @@ jobs:
mkdir Kokkos
cp -rf /root/Kokkos_install/${{ matrix.exec_model }}/* Kokkos/
- name: Install dependencies (CentOS)
if: ${{ (matrix.container_img == 'quay.io/pypa/manylinux2014_x86_64') }}
- name: Install dependencies (AlmaLinux)
if: ${{ (matrix.container_img == 'quay.io/pypa/manylinux_2_28_x86_64') }}
run: |
# Reduce wait time for repos not responding
cat /etc/yum.conf | sed "s/\[main\]/\[main\]\ntimeout=5/g" > /etc/yum.conf
yum update -y && yum install -y docker
dnf update -y && dnf install -y podman
- name: Install cibuildwheel
run: python3.9 -m pip install cibuildwheel~=2.16.0

- name: Build wheels
env:
CIBW_CONTAINER_ENGINE: "podman"

CIBW_ARCHS_LINUX: ${{matrix.arch}}

CIBW_BUILD: ${{ matrix.cibw_build }}
Expand All @@ -147,15 +149,15 @@ jobs:

# Python build settings
CIBW_BEFORE_BUILD: |
cat /etc/yum.conf | sed "s/\[main\]/\[main\]\ntimeout=5/g" > /etc/yum.conf
cat /etc/dnf.conf | sed "s/\[main\]/\[main\]\ntimeout=5/g" > /etc/dnf.conf
python -m pip install ninja cmake~=3.24.0 scipy
yum clean all -y
yum install centos-release-scl-rh -y
yum install devtoolset-11-gcc-c++ -y
source /opt/rh/devtoolset-11/enable -y
dnf clean all -y
dnf install gcc-toolset-13 -y
source /opt/rh/gcc-toolset-13/enable -y
PATH="/opt/rh/gcc-toolset-13/root/usr/bin:$PATH"
CIBW_ENVIRONMENT: |
PATH="/opt/rh/devtoolset-11/root/usr/bin:$PATH" \
PATH="/opt/rh/gcc-toolset-13/root/usr/bin:$PATH" \
PL_BACKEND="${{ matrix.pl_backend }}"
CIBW_BEFORE_TEST: |
Expand All @@ -166,7 +168,7 @@ jobs:
DEVICENAME=`echo ${{ matrix.pl_backend }} | sed "s/_/./g"`
pl-device-test --device=${DEVICENAME} --skip-ops -x --tb=short --no-flaky-report
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28

CIBW_BUILD_VERBOSITY: 3

Expand Down
38 changes: 19 additions & 19 deletions .github/workflows/wheel_linux_x86_64_cuda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ name: Wheel::Linux::x86_64::CUDA
# **Who does it impact**: Wheels to be uploaded to PyPI.

env:
GCC_VERSION: "11"
GCC_VERSION: 12

on:
pull_request:
Expand Down Expand Up @@ -48,28 +48,30 @@ jobs:
pl_backend: ["lightning_gpu"]
cuda_version: ["12"]
cibw_build: ${{ fromJson(needs.set_wheel_build_matrix.outputs.python_version) }}
container_img: ["quay.io/pypa/manylinux2014_x86_64"]
container_img: ["quay.io/pypa/manylinux_2_28_x86_64"]
timeout-minutes: 30
name: Linux::${{ matrix.arch }} - ${{ matrix.pl_backend }} CUDA ${{ matrix.cuda_version }} (Python ${{ fromJson('{ "cp39-*":"3.9","cp310-*":"3.10","cp311-*":"3.11","cp312-*":"3.12" }')[matrix.cibw_build] }})
runs-on: ${{ needs.determine_runner.outputs.runner_group }}
container: ${{ matrix.container_img }}
container:
image: ${{ matrix.container_img }}
options: --privileged

steps:
- name: Checkout PennyLane-Lightning
uses: actions/checkout@v3

- name: Install dependencies (CentOS)
if: ${{ (matrix.container_img == 'quay.io/pypa/manylinux2014_x86_64') }}
- name: Install dependencies (AlmaLinux)
if: ${{ (matrix.container_img == 'quay.io/pypa/manylinux_2_28_x86_64') }}
run: |
# Reduce wait time for repos not responding
cat /etc/yum.conf | sed "s/\[main\]/\[main\]\ntimeout=5/g" > /etc/yum.conf
yum update -y && yum install -y docker
dnf update -y && dnf install -y podman
- name: Install cibuildwheel
run: python3.9 -m pip install cibuildwheel~=2.16.0

- name: Build wheels
env:
CIBW_CONTAINER_ENGINE: "podman"

CIBW_ARCHS_LINUX: ${{ matrix.arch }}

CIBW_BUILD: ${{ matrix.cibw_build }}
Expand All @@ -80,25 +82,23 @@ jobs:

# Python build settings
CIBW_BEFORE_BUILD: |
cat /etc/yum.conf | sed "s/\[main\]/\[main\]\ntimeout=5/g" > /etc/yum.conf
python -m pip install ninja cmake~=3.24.3 auditwheel~=5.0 custatevec-cu${{ matrix.cuda_version }} scipy
yum clean all -y
yum install centos-release-scl-rh -y
yum install devtoolset-11-gcc-c++ -y
source /opt/rh/devtoolset-11/enable -y
yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo -y
yum -y install cuda-${{ matrix.cuda_version }}-0 git openssh wget
dnf clean all -y
dnf install gcc-toolset-12 dnf-utils -y
source /opt/rh/gcc-toolset-12/enable -y
yum-config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo -y
dnf -y install cuda-${{ matrix.cuda_version }}-0 git openssh wget
# ensure nvcc is available
CIBW_ENVIRONMENT: |
PATH=/opt/rh/devtoolset-11/root/usr/bin:$PATH:/usr/local/cuda-${{ matrix.cuda_version }}/bin \
LD_LIBRARY_PATH=/opt/rh/devtoolset-11/root/usr/lib64:/opt/rh/devtoolset-11/root/usr/lib:/opt/rh/devtoolset-11/root/usr/lib64/dyninst:/opt/rh/devtoolset-11/root/usr/lib/dyninst:$LD_LIBRARY_PATH:/usr/local/cuda-${{ matrix.cuda_version }}/lib64 \
PATH=/opt/rh/gcc-toolset-12/root/usr/bin:$PATH:/usr/local/cuda-${{ matrix.cuda_version }}/bin \
LD_LIBRARY_PATH=/opt/rh/gcc-toolset-12/root/usr/lib64:/opt/rh/gcc-toolset-12/root/usr/lib:/opt/rh/gcc-toolset-12/root/usr/lib64/dyninst:/opt/rh/gcc-toolset-12/root/usr/lib/dyninst:$LD_LIBRARY_PATH:/usr/local/cuda-${{ matrix.cuda_version }}/lib64 \
PL_BACKEND="${{ matrix.pl_backend }}" \
PKG_CONFIG_PATH=/opt/rh/devtoolset-11/root/usr/lib64/pkgconfig:$PKG_CONFIG_PATH
PKG_CONFIG_PATH=/opt/rh/gcc-toolset-12/root/usr/lib64/pkgconfig:$PKG_CONFIG_PATH
CIBW_REPAIR_WHEEL_COMMAND_LINUX: "./bin/auditwheel repair -w {dest_dir} {wheel}"

CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28

CIBW_BUILD_VERBOSITY: 3

Expand Down

0 comments on commit cc2688e

Please sign in to comment.