Attempt to Add ROCm Support to Qiskit Aer for AMD GPUs (issue #2113) #5000
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
push: | |
branches: [main, 'stable/*'] | |
pull_request: | |
branches: [main, 'stable/*'] | |
concurrency: | |
group: ${{ github.repository }}-${{ github.ref }}-${{ github.head_ref }}-${{ github.workflow }} | |
cancel-in-progress: true | |
jobs: | |
wheel: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: ["macos-13", "ubuntu-latest", "windows-2019"] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python Python '3.13' | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.13' | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v2 | |
if: runner.os == 'Windows' | |
- name: Install deps | |
run: python -m pip install -U cibuildwheel==2.22.0 | |
- name: Build Wheels | |
env: | |
AER_CMAKE_OPENMP_BUILD: 1 | |
run: cibuildwheel --output-dir wheelhouse | |
- uses: actions/upload-artifact@v4 | |
with: | |
path: ./wheelhouse/*.whl | |
name: artifact-${{ matrix.os }} | |
wheel-arm64: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: ["macos-latest"] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python Python 3.13 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.13' | |
architecture: arm64 | |
- name: Install deps | |
run: python -m pip install -U cibuildwheel==2.22.0 | |
- name: Build Wheels | |
env: | |
CIBW_ARCHS_MACOS: arm64 | |
run: cibuildwheel --output-dir wheelhouse | |
- uses: actions/upload-artifact@v4 | |
with: | |
path: ./wheelhouse/*.whl | |
name: artifact-${{ github.job }} | |
wheel-gpu-cu11: | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Maximize build space | |
uses: easimon/maximize-build-space@master | |
with: | |
root-reserve-mb: 30000 | |
swap-size-mb: 1024 | |
remove-dotnet: 'true' | |
remove-android: 'true' | |
remove-haskell: 'true' | |
remove-codeql: 'true' | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
name: Install Python | |
with: | |
python-version: '3.13' | |
- name: Install cibuildwheel | |
run: | | |
python -m pip install cibuildwheel==2.22.0 | |
- name: Build wheels | |
env: | |
CIBW_BEFORE_ALL: "sed -i -e 's/^mirrorlist/#mirrorlist/' -e 's/^#baseurl/baseurl/' -e 's/mirror.centos.org/vault.centos.org/' /etc/yum.repos.d/*.repo && yum install -y yum-utils wget && wget -q https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-rhel7-11-8-local-11.8.0_520.61.05-1.x86_64.rpm && rpm -i cuda-repo-rhel7-11-8-local-11.8.0_520.61.05-1.x86_64.rpm && yum clean all && yum -y install cuda && yum -y install openblas-devel && yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo && yum clean all" | |
CIBW_BEFORE_BUILD : "pip cache purge && pip install nvidia-cuda-runtime-cu11 nvidia-cublas-cu11 nvidia-cusolver-cu11 nvidia-cusparse-cu11 'cuquantum-cu11<24.11.0'" | |
CIBW_SKIP: "*-manylinux_i686 pp* cp36* cp37* cp38* cp39* cp310* cp311* *musllinux*" | |
CIBW_ENVIRONMENT: QISKIT_AER_PACKAGE_NAME=qiskit-aer-gpu-cu11 QISKIT_AER_CUDA_MAJOR=11 CMAKE_VERBOSE_MAKEFILE=true AER_THRUST_BACKEND=CUDA CUDACXX=/usr/local/cuda/bin/nvcc AER_CUDA_ARCH="7.0 7.2 7.5 8.0 8.6 8.7" AER_PYTHON_CUDA_ROOT=/opt/_internal AER_CIBUILD=true | |
CIBW_REPAIR_WHEEL_COMMAND: 'auditwheel repair --exclude libcudart.so.11.0 --exclude libcustatevec.so.1 --exclude libcutensornet.so.2 --exclude libcutensor.so.1 --exclude libcutensorMg.so.1 --exclude libcusolver.so.11 --exclude libcusolverMg.so.11 --exclude libcusparse.so.11 --exclude libcublas.so.11 --exclude libcublasLt.so.11 -w {dest_dir} {wheel}' | |
run: | | |
python -m cibuildwheel --output-dir wheelhouse | |
- uses: actions/upload-artifact@v4 | |
with: | |
path: ./wheelhouse/*.whl | |
name: artifact-${{ github.job }} | |
wheel-gpu: | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Maximize build space | |
uses: easimon/maximize-build-space@master | |
with: | |
root-reserve-mb: 30000 | |
swap-size-mb: 1024 | |
remove-dotnet: 'true' | |
remove-android: 'true' | |
remove-haskell: 'true' | |
remove-codeql: 'true' | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
name: Install Python | |
with: | |
python-version: '3.13' | |
- name: Install cibuildwheel | |
run: | | |
python -m pip install cibuildwheel==2.22.0 | |
- name: Build wheels | |
env: | |
CIBW_BEFORE_ALL: "sed -i -e 's/^mirrorlist/#mirrorlist/' -e 's/^#baseurl/baseurl/' -e 's/mirror.centos.org/vault.centos.org/' /etc/yum.repos.d/*.repo && yum install -y yum-utils wget && wget -q https://developer.download.nvidia.com/compute/cuda/12.5.1/local_installers/cuda-repo-rhel8-12-5-local-12.5.1_555.42.06-1.x86_64.rpm && rpm -i cuda-repo-rhel8-12-5-local-12.5.1_555.42.06-1.x86_64.rpm && yum clean all && yum -y install cuda-toolkit-12-5 && yum -y install openblas-devel && yum clean all" | |
CIBW_BEFORE_BUILD : "pip cache purge && pip install nvidia-cuda-runtime-cu12 nvidia-nvjitlink-cu12 nvidia-cublas-cu12 nvidia-cusolver-cu12 nvidia-cusparse-cu12 'cuquantum-cu12<24.11.0'" | |
CIBW_SKIP: "*-manylinux_i686 pp* cp36* cp37* cp38* cp39* cp310* cp311* *musllinux*" | |
CIBW_ENVIRONMENT: QISKIT_AER_PACKAGE_NAME=qiskit-aer-gpu QISKIT_AER_CUDA_MAJOR=12 CMAKE_VERBOSE_MAKEFILE=true AER_THRUST_BACKEND=CUDA CUDACXX=/usr/local/cuda/bin/nvcc AER_CUDA_ARCH="7.0 7.2 7.5 8.0 8.6 8.7 8.9 9.0" AER_PYTHON_CUDA_ROOT=/opt/_internal AER_CIBUILD=true | |
CIBW_REPAIR_WHEEL_COMMAND: 'auditwheel repair --exclude libcudart.so.12 --exclude libcustatevec.so.1 --exclude libcutensornet.so.2 --exclude libcutensor.so.1 --exclude libcutensorMg.so.1 --exclude libcusolver.so.11 --exclude libcusolverMg.so.11 --exclude libcusolver.so.12 --exclude libcusolverMg.so.12 --exclude libcusparse.so.12 --exclude libcublas.so.12 --exclude libcublasLt.so.12 --exclude libnvJitLink.so.12 -w {dest_dir} {wheel}' | |
run: | | |
python -m cibuildwheel --output-dir wheelhouse | |
- uses: actions/upload-artifact@v4 | |
with: | |
path: ./wheelhouse/*.whl | |
name: artifact-${{ github.job }} | |
wheel-gpu-rocm: | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Maximize build space | |
uses: easimon/maximize-build-space@master | |
with: | |
root-reserve-mb: 30000 | |
swap-size-mb: 1024 | |
remove-dotnet: 'true' | |
remove-android: 'true' | |
remove-haskell: 'true' | |
remove-codeql: 'true' | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
name: Install Python | |
with: | |
python-version: '3.13' | |
- name: Install ROCm Dependencies | |
run: | | |
sudo apt update | |
sudo apt install -y rocm-dev rocm-libs rocblas rocm-llvm | |
echo "/opt/rocm/bin" >> $GITHUB_PATH | |
- name: Install cibuildwheel | |
run: | | |
python -m pip install cibuildwheel==2.22.0 | |
- name: Build ROCm wheels | |
env: | |
CIBW_BEFORE_ALL: "yum install -y openblas-devel" | |
CIBW_SKIP: "*-manylinux_i686 pp* cp36* cp37* cp38* cp39* cp310* cp311* *musllinux*" | |
CIBW_ENVIRONMENT: QISKIT_AER_PACKAGE_NAME=qiskit-aer-gpu-rocm AER_THRUST_BACKEND=ROCM AER_ROCM_ARCH="gfx900 gfx906 gfx908 gfx90a gfx1030" | |
CIBW_REPAIR_WHEEL_COMMAND: 'auditwheel repair --exclude librocblas.so.0 --exclude librocm-runtime.so.1 -w {dest_dir} {wheel}' | |
run: | | |
python -m cibuildwheel --output-dir wheelhouse | |
- uses: actions/upload-artifact@v4 | |
with: | |
path: ./wheelhouse/*.whl | |
name: artifact-${{ github.job }} | |
test-rocm: | |
runs-on: ubuntu-latest | |
needs: wheel-gpu-rocm # Ensures the ROCm wheels are built before testing | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.13' | |
- name: Install ROCm Dependencies | |
run: | | |
sudo apt update | |
sudo apt install -y rocm-dev rocm-libs rocblas rocm-llvm | |
echo "/opt/rocm/bin" >> $GITHUB_PATH | |
- name: Install Test Dependencies | |
run: | | |
pip install -r requirements-dev.txt pytest | |
- name: Install ROCm Build | |
run: | | |
pip install ./wheelhouse/qiskit_aer_gpu_rocm*.whl | |
- name: Run Unit Tests for ROCm | |
env: | |
AER_THRUST_BACKEND: ROCM | |
run: | | |
pytest -v tests --disable-warnings |