Add the state_vector
, measurement
class and simulate
method for the LightningGPU with the new device API
#1263
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: Testing::x86_64::LGPU::C++ | |
on: | |
workflow_call: | |
inputs: | |
lightning-version: | |
type: string | |
required: true | |
description: The version of Lightning to use. Valid values are either 'release' (most recent release candidate), 'stable' (most recent git-tag) or 'latest' (most recent commit from master) | |
pennylane-version: | |
type: string | |
required: true | |
description: The version of PennyLane to use. Valid values are either 'release' (most recent release candidate), 'stable' (most recent git-tag) or 'latest' (most recent commit from master) | |
pull_request: | |
types: | |
- opened | |
- reopened | |
- synchronize | |
- ready_for_review | |
- labeled | |
paths: | |
- .github/workflows/tests_lgpu_cpp.yml | |
- pennylane_lightning/core/src/** | |
- '!pennylane_lightning/core/src/simulators/lightning_kokkos/**' | |
- '!pennylane_lightning/core/src/simulators/lightning_qubit/**' | |
- '!pennylane_lightning/core/src/simulators/lightning_tensor/**' | |
push: | |
branches: | |
- master | |
env: | |
CI_CUDA_ARCH: 86 | |
COVERAGE_FLAGS: "--cov=pennylane_lightning --cov-report=term-missing --cov-report=xml:./coverage.xml --no-flaky-report -p no:warnings --tb=native" | |
GCC_VERSION: 11 | |
TF_VERSION: 2.10.0 | |
TORCH_VERSION: 1.11.0+cpu | |
concurrency: | |
group: tests_lgpu_cpp-${{ github.ref }}-${{ github.event_name }}-${{ inputs.lightning-version }}-${{ inputs.pennylane-version }} | |
cancel-in-progress: true | |
jobs: | |
builddeps: | |
if: github.event.pull_request.draft == false | |
runs-on: | |
- self-hosted | |
- ubuntu-22.04 | |
- gpu | |
strategy: | |
max-parallel: 1 | |
matrix: | |
cuda_version: ["12"] | |
steps: | |
- name: Validate GPU version and installed compiler | |
run: | | |
source /etc/profile.d/modules.sh | |
module use /opt/modules | |
module load cuda/${{ matrix.cuda_version }} | |
echo "${PATH}" >> $GITHUB_PATH | |
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}" >> $GITHUB_ENV | |
nvcc --version | |
nvidia-smi | |
cpptestswithLGPU: | |
if: ${{ !contains(fromJSON('["schedule", "workflow_dispatch"]'), github.event_name) }} | |
needs: [builddeps] | |
strategy: | |
matrix: | |
pl_backend: ["lightning_gpu"] | |
enable_lapack: ["OFF"] | |
cuda_version: ["12"] | |
name: C++ Tests (${{ matrix.pl_backend }}, cuda-${{ matrix.cuda_version }}, enable_lapack=${{ matrix.enable_lapack }}) | |
runs-on: | |
- ubuntu-22.04 | |
- self-hosted | |
- gpu | |
steps: | |
- name: Validate GPU version and installed compiler | |
run: | | |
source /etc/profile.d/modules.sh | |
module use /opt/modules | |
module load cuda/${{ matrix.cuda_version }} | |
echo "${PATH}" >> $GITHUB_PATH | |
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}" >> $GITHUB_ENV | |
nvcc --version | |
nvidia-smi | |
- name: Checkout PennyLane-Lightning-GPU | |
uses: actions/checkout@v4 | |
with: | |
path: main | |
- uses: actions/setup-python@v5 | |
name: Install Python | |
with: | |
python-version: '3.10' | |
- name: Setup Python virtual environment | |
id: setup_venv | |
env: | |
VENV_NAME: ${{ github.workspace }}/venv_${{ steps.setup_python.outputs.python-version }}_${{ github.sha }} | |
run: | | |
# Clear any pre-existing venvs | |
rm -rf venv_* | |
# Create new venv for this workflow_run | |
python --version | |
python -m venv ${{ env.VENV_NAME }} | |
# Add the venv to PATH for subsequent steps | |
echo ${{ env.VENV_NAME }}/bin >> $GITHUB_PATH | |
# Adding venv name as an output for subsequent steps to reference if needed | |
echo "venv_name=${{ env.VENV_NAME }}" >> $GITHUB_OUTPUT | |
echo "Python_ROOT_DIR=${{ env.VENV_NAME }}" >> $GITHUB_ENV | |
echo "Python3_ROOT_DIR=${{ env.VENV_NAME }}" >> $GITHUB_ENV | |
# Adding venv site-packages to output for subsequent step to referecen if needed | |
echo "site_packages_dir=$(${{ env.VENV_NAME }}/bin/python -c 'import sysconfig; print(sysconfig.get_path("platlib"))')" >> $GITHUB_OUTPUT | |
- name: Display Python-Path | |
id: python_path | |
run: | | |
py_path=$(which python) | |
echo "Python Interpreter Path => $py_path" | |
echo "python=$py_path" >> $GITHUB_OUTPUT | |
pip_path=$(which pip) | |
echo "PIP Path => $pip_path" | |
echo "pip=$pip_path" >> $GITHUB_OUTPUT | |
- name: Install required packages | |
run: | | |
python -m pip install ninja cmake custatevec-cu${{ matrix.cuda_version }} scipy | |
sudo apt-get -y -q install liblapack-dev black | |
- name: Build and run unit tests | |
run: | | |
cd main | |
cmake . -BBuild \ | |
-DCUQUANTUM_SDK=$(python -c "import site; print( f'{site.getsitepackages()[0]}/cuquantum')")\ | |
-DBUILD_TESTS=ON \ | |
-DENABLE_PYTHON=OFF \ | |
-DENABLE_LAPACK=${{ matrix.enable_lapack }} \ | |
-DPL_BACKEND=${{ matrix.pl_backend }} \ | |
-DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION) \ | |
-DENABLE_COVERAGE=ON \ | |
-G Ninja | |
cmake --build ./Build | |
cd ./Build | |
mkdir -p ./tests/results_${{ github.job }}_${{ matrix.pl_backend }}-${{ matrix.enable_lapack }} | |
for file in *runner ; do ./$file --order lex --reporter junit --out ./tests/results_${{ github.job }}_${{ matrix.pl_backend }}-${{ matrix.enable_lapack }}/report_$file.xml; done; | |
lcov --directory . -b ../pennylane_lightning/core/src --capture --output-file coverage.info | |
lcov --remove coverage.info '/usr/*' --output-file coverage.info | |
mv coverage.info coverage-${{ github.job }}-${{ matrix.pl_backend }}-${{ matrix.enable_lapack }}.info | |
- name: Upload test results | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: ubuntu-tests-reports-${{ github.job }}_${{ matrix.pl_backend }}-${{ matrix.enable_lapack }} | |
path: ./main/Build/tests/results_${{ github.job }}_${{ matrix.pl_backend }}-${{ matrix.enable_lapack }} | |
retention-days: 1 | |
if-no-files-found: error | |
include-hidden-files: true | |
- name: Upload code coverage results | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ubuntu-codecov-results-cpp-${{ matrix.pl_backend }}-${{ matrix.enable_lapack }} | |
path: ./main/Build/coverage-${{ github.job }}-${{ matrix.pl_backend }}-${{ matrix.enable_lapack }}.info | |
retention-days: 1 | |
if-no-files-found: error | |
include-hidden-files: true | |
upload-to-codecov-linux-cpp: | |
needs: [cpptestswithLGPU] | |
name: Upload coverage data to codecov | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download coverage reports | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: ubuntu-codecov* | |
merge-multiple: true | |
- name: Upload to Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
fail_ci_if_error: true | |
verbose: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
- name: Cleanup | |
if: always() | |
run: | | |
rm -rf ${{ steps.setup_venv.outputs.venv_name }} | |
rm -rf * | |
rm -rf .git | |
rm -rf .gitignore | |
rm -rf .github | |
pip cache purge |