Skip to content
Draft
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
16 changes: 8 additions & 8 deletions .github/workflows/audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@ jobs:
run: >
cmake -B ${{ env.build_dir }}
-DCMAKE_CXX_COMPILER=clang++
-DENABLE_TESTING=ON
-DENABLE_MULTITHREADING=OFF
-DFLOAT_PRECISION=${{ matrix.precision }}
-DQUEST_BUILD_TESTS=ON
-DQUEST_ENABLE_OMP=OFF
-DQUEST_FLOAT_PRECISION=${{ matrix.precision }}
-DCMAKE_CXX_FLAGS="${{ env.sanitiser_flags }}"
-DCMAKE_EXE_LINKER_FLAGS="${{ env.sanitiser_flags }}"

Expand Down Expand Up @@ -92,9 +92,9 @@ jobs:
- name: Configure CMake
run: >
cmake -B ${{ env.build_dir }}
-DENABLE_TESTING=ON
-DENABLE_MULTITHREADING=OFF
-DFLOAT_PRECISION=${{ matrix.precision }}
-DQUEST_BUILD_TESTS=ON
-DQUEST_ENABLE_OMP=OFF
-DQUEST_FLOAT_PRECISION=${{ matrix.precision }}

- name: Compile QuEST
run: cmake --build ${{ env.build_dir }} --parallel
Expand Down Expand Up @@ -147,8 +147,8 @@ jobs:
run: >
cmake -B .
-DCMAKE_BUILD_TYPE=Release
-DENABLE_TESTING=ON
-DENABLE_MULTITHREADING=OFF
-DQUEST_BUILD_TESTS=ON
-DQUEST_ENABLE_OMP=OFF
-DCMAKE_CXX_FLAGS="--coverage"
-DCMAKE_EXE_LINKER_FLAGS="--coverage"

Expand Down
45 changes: 30 additions & 15 deletions .github/workflows/compile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -211,29 +211,44 @@ jobs:
- name: Install ROCm
if: ${{ matrix.hip == 'ON' }}
run: |
sudo apt update
sudo apt upgrade
sudo apt install "linux-headers-$(uname -r)" "linux-modules-extra-$(uname -r)"
sudo apt install python3-setuptools python3-wheel
sudo usermod -a -G render,video $USER
wget https://repo.radeon.com/amdgpu-install/6.3.3/ubuntu/noble/amdgpu-install_6.3.60303-1_all.deb
sudo apt install ./amdgpu-install_6.3.60303-1_all.deb
# Make the directory if it doesn't exist yet.
# This location is recommended by the distribution maintainers.
sudo mkdir --parents --mode=0755 /etc/apt/keyrings
# Download the key, convert the signing-key to a full
# keyring required by apt and store in the keyring directory
wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | \
gpg --dearmor | sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null
sudo tee /etc/apt/sources.list.d/amdgpu.list << EOF
deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/7.2 noble main
deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/graphics/7.2/ubuntu noble main
EOF
sudo tee /etc/apt/preferences.d/rocm-pin-600 << EOF
Package: *
Pin: release o=repo.radeon.com
Pin-Priority: 600
EOF
sudo apt update
sudo apt install amdgpu-dkms rocm
sudo apt autoremove
sudo apt install rocm rocm-hip-sdk rocm-hip-runtime-dev
echo "${{ env.rocm_path }}" >> $GITHUB_PATH

# invoke cmake, disabling LTO (it duplicates symbols with CUDA + MPI)
- name: Configure CMake
run: >
cmake -B ${{ env.build_dir }}
-DBUILD_EXAMPLES=ON
-DENABLE_TESTING=ON
-DFLOAT_PRECISION=${{ matrix.precision }}
-DENABLE_DEPRECATED_API=${{ matrix.deprecated }}
-DDISABLE_DEPRECATION_WARNINGS=${{ matrix.deprecated }}
-DENABLE_MULTITHREADING=${{ matrix.omp }}
-DENABLE_DISTRIBUTION=${{ matrix.mpi }}
-DENABLE_CUDA=${{ matrix.cuda }}
-DENABLE_HIP=${{ matrix.hip }}
-DENABLE_CUQUANTUM=${{ matrix.cuquantum }}
-DQUEST_BUILD_EXAMPLES=ON
-DQUEST_BUILD_TESTS=ON
-DQUEST_FLOAT_PRECISION=${{ matrix.precision }}
-DQUEST_ENABLE_DEPRECATED_API=${{ matrix.deprecated }}
-DQUEST_DISABLE_DEPRECATION_WARNINGS=${{ matrix.deprecated }}
-DQUEST_ENABLE_OMP=${{ matrix.omp }}
-DQUEST_ENABLE_MPI=${{ matrix.mpi }}
-DQUEST_ENABLE_CUDA=${{ matrix.cuda }}
-DQUEST_ENABLE_HIP=${{ matrix.hip }}
-DQUEST_ENABLE_CUQUANTUM=${{ matrix.cuquantum }}
-DCMAKE_CUDA_ARCHITECTURES=${{ env.cuda_arch }}
-DCMAKE_HIP_ARCHITECTURES=${{ env.hip_arch }}
-DCMAKE_CXX_COMPILER=${{ matrix.compiler }}
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/test_free.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,11 @@ jobs:
- name: Configure CMake
run: >
cmake -B ${{ env.build_dir }}
-DENABLE_TESTING=ON
-DENABLE_MULTITHREADING=OFF
-DENABLE_DEPRECATED_API=${{ matrix.version == 3 && 'ON' || 'OFF' }}
-DDISABLE_DEPRECATION_WARNINGS=${{ matrix.version == 3 && 'ON' || 'OFF' }}
-DFLOAT_PRECISION=${{ matrix.precision }}
-DQUEST_BUILD_TESTS=ON
-DQUEST_ENABLE_OMP=OFF
-DQUEST_ENABLE_DEPRECATED_API=${{ matrix.version == 3 && 'ON' || 'OFF' }}
-DQUEST_DISABLE_DEPRECATION_WARNINGS=${{ matrix.version == 3 && 'ON' || 'OFF' }}
-DQUEST_FLOAT_PRECISION=${{ matrix.precision }}

# force 'Release' build (needed by MSVC to enable optimisations)
- name: Compile
Expand All @@ -80,11 +80,11 @@ jobs:
# are manually excluding each integration test by name
- name: Run v4 tests
if: ${{ matrix.version == 4 }}
run: ctest -j2 --output-on-failure --schedule-random -E "density evolution"
run: ctest -j2 --output-on-failure --schedule-random -C Release -E "density evolution"
working-directory: ${{ env.build_dir }}

# run v3 unit tests in random order
- name: Run v3 tests
if: ${{ matrix.version == 3 }}
run: ctest -j2 --output-on-failure --schedule-random
run: ctest -j2 --output-on-failure --schedule-random -C Release
working-directory: ${{ env.depr_dir }}
63 changes: 37 additions & 26 deletions .github/workflows/test_paid.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
# Tests execution of v4 unit and integration tests
# on paid runners using multithreading, GPU-
# acceleration and distribution, only on Linux.
#
# Note that the blow tests are deliberately
# excluding Trotter functions because they are
# slow and expensive, and the functions merely
# invoke other functions existed elsewhere, in
# a backend agnostic way.
#
# As of 12/03/2025, these "large runners" cost:
# - 16c/min for each ARM runner (OMP, MPI)
# - 7c/min for each GPU runner (CUDA, cuQuantum)
Expand Down Expand Up @@ -79,11 +86,15 @@ jobs:
env:
build_dir: "build"

# don't test Trotter functions (ctest is func-name regex, catch is tag)
test_exec: ./tests/tests
ctest_flag: "-E Trotter"
catch_flag: '"~[trotterisation]"'

# GPU runner has a Tesla T4 16 GB
cuda_arch: 75

# CPU/MPI runner has 64 cores
test_exec: ./tests/tests
num_mpi_nodes: 16
num_mpi_threads: 4
num_omp_threads: 64
Expand Down Expand Up @@ -125,44 +136,44 @@ jobs:
- name: Configure CMake
run: >
cmake -B ${{ env.build_dir }}
-DENABLE_TESTING=ON
-DFLOAT_PRECISION=${{ matrix.precision }}
-DENABLE_DEPRECATED_API=${{ matrix.version == 3 && 'ON' || 'OFF' }}
-DENABLE_MULTITHREADING=${{ matrix.omp }}
-DENABLE_DISTRIBUTION=${{ matrix.mpi }}
-DENABLE_CUDA=${{ matrix.cuda }}
-DENABLE_CUQUANTUM=${{ matrix.cuquantum }}
-DQUEST_BUILD_TESTS=ON
-DQUEST_FLOAT_PRECISION=${{ matrix.precision }}
-DQUEST_ENABLE_DEPRECATED_API=${{ matrix.version == 3 && 'ON' || 'OFF' }}
-DQUEST_ENABLE_OMP=${{ matrix.omp }}
-DQUEST_ENABLE_MPI=${{ matrix.mpi }}
-DQUEST_ENABLE_CUDA=${{ matrix.cuda }}
-DQUEST_ENABLE_CUQUANTUM=${{ matrix.cuquantum }}
-DCMAKE_CUDA_ARCHITECTURES=${{ env.cuda_arch }}
-DTEST_ALL_DEPLOYMENTS=${{ env.test_all_deploys }}
-DTEST_MAX_NUM_QUBIT_PERMUTATIONS=${{ env.num_qubit_perms }}
-DQUEST_TEST_TRY_ALL_DEPLOYMENTS=${{ env.test_all_deploys }}
-DQUEST_TEST_MAX_NUM_QUBIT_PERMUTATIONS=${{ env.num_qubit_perms }}

- name: Compile
run: cmake --build ${{ env.build_dir }} --parallel

# specifying only env-vars with non-default values
- name: Configure tests with environment variables
run: |
echo "TEST_MAX_NUM_QUBIT_PERMUTATIONS=${{ env.num_qubit_perms }}" >> $GITHUB_ENV
echo "TEST_ALL_DEPLOYMENTS=${{ env.test_all_deploys }}" >> $GITHUB_ENV
echo "QUEST_TEST_MAX_NUM_QUBIT_PERMUTATIONS=${{ env.num_qubit_perms }}" >> $GITHUB_ENV
echo "QUEST_TEST_TRY_ALL_DEPLOYMENTS=${{ env.test_all_deploys }}" >> $GITHUB_ENV

# cannot use ctests when distributed, grr!
- name: Run multithreaded + distributed v4 tests (16 nodes, 4 threads eeach)
if: ${{ matrix.mpi == 'ON' }}
run: |
OMP_NUM_THREADS=${{ env.num_mpi_threads }} \
mpiexec -n ${{ env.num_mpi_nodes }} ${{ env.test_exec }}
mpiexec -n ${{ env.num_mpi_nodes }} ${{ env.test_exec }} ${{ env.catch_flag }}
working-directory: ${{ env.build_dir }}

- name: Run GPU v4 tests
if: ${{ matrix.cuda == 'ON' }}
run: ctest --output-on-failure
run: ctest --output-on-failure ${{ env.ctest_flag }}
working-directory: ${{ env.build_dir }}

- name: Run multithreaded v4 tests (64 threads ARM)
if: ${{ matrix.cuda == 'OFF' && matrix.mpi == 'OFF' }}
run: |
OMP_NUM_THREADS=${{ env.num_omp_threads }} \
ctest --output-on-failure
ctest --output-on-failure ${{ env.ctest_flag }}
working-directory: ${{ env.build_dir }}


Expand Down Expand Up @@ -202,7 +213,7 @@ jobs:
env:
build_dir: "build"

# we will only execute mixed-deployment unit tests
# we will only execute mixed-deployment unit tests (no overlap with Trotter)
test_exec: ./tests/tests
test_flag: "[mixed]"

Expand Down Expand Up @@ -253,13 +264,13 @@ jobs:
- name: Configure CMake
run: >
cmake -B ${{ env.build_dir }}
-DENABLE_TESTING=ON
-DFLOAT_PRECISION=${{ matrix.precision }}
-DENABLE_DEPRECATED_API=${{ matrix.version == 3 && 'ON' || 'OFF' }}
-DENABLE_MULTITHREADING=${{ matrix.omp }}
-DENABLE_DISTRIBUTION=${{ matrix.mpi }}
-DENABLE_CUDA=${{ matrix.cuda }}
-DENABLE_CUQUANTUM=${{ matrix.cuquantum }}
-DQUEST_BUILD_TESTS=ON
-DQUEST_FLOAT_PRECISION=${{ matrix.precision }}
-DQUEST_ENABLE_DEPRECATED_API=${{ matrix.version == 3 && 'ON' || 'OFF' }}
-DQUEST_ENABLE_OMP=${{ matrix.omp }}
-DQUEST_ENABLE_MPI=${{ matrix.mpi }}
-DQUEST_ENABLE_CUDA=${{ matrix.cuda }}
-DQUEST_ENABLE_CUQUANTUM=${{ matrix.cuquantum }}
-DCMAKE_CUDA_ARCHITECTURES=${{ env.cuda_arch }}
-DCMAKE_CXX_FLAGS=${{ matrix.mpi == 'ON' && matrix.cuda == 'ON' && '-fno-lto' || '' }}

Expand All @@ -269,9 +280,9 @@ jobs:
# specify only env-vars with non-default values
- name: Configure tests with environment variables
run: |
echo "TEST_ALL_DEPLOYMENTS=${{ env.test_all_deploys }}" >> $GITHUB_ENV
echo "TEST_NUM_MIXED_DEPLOYMENT_REPETITIONS=${{ env.test_repetitions }}" >> $GITHUB_ENV
echo "PERMIT_NODES_TO_SHARE_GPU=${{ env.mpi_share_gpu }}" >> $GITHUB_ENV
echo "QUEST_TEST_TRY_ALL_DEPLOYMENTS=${{ env.test_all_deploys }}" >> $GITHUB_ENV
echo "QUEST_TEST_NUM_MIXED_DEPLOYMENT_REPETITIONS=${{ env.test_repetitions }}" >> $GITHUB_ENV
echo "QUEST_PERMIT_NODES_TO_SHARE_GPU=${{ env.mpi_share_gpu }}" >> $GITHUB_ENV

# cannot use ctests when distributed, grr!
- name: Run GPU + distributed v4 mixed tests (4 nodes sharing 1 GPU)
Expand Down
8 changes: 6 additions & 2 deletions AUTHORS.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ Dr Ian Bush [consultant]
HPC

External contributors:
Íñigo Aréjula Aísa
patched validation error in the experimental user-owned MPI interface (#722)
Daniel Expósito Patiño
patched the applyMultiStateControlledSqrtSwap C++ signature (#737)
Diogo Pratas Maia
added non-unitary Pauli gadget (for unitaryHACK issue #594)
Mai Đức Khang
Expand All @@ -68,8 +72,8 @@ SchineCompton
patched GPU Cmake Release build
Christopher J. Anders
patched Cmake build when multhithreading defaults off
revsied Cmake min version for GPU build
revised Cmake min version for GPU build
Gleb Struchalin
patched the cmake standalone build
Milos Prokop
implemented serial prototype of initDiagonalOpFromPauliHamil
implemented serial prototype of initDiagonalOpFromPauliHamil
Loading
Loading