Add sparseH for LGPU #93
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::Linux::x86_64::LGPU | |
on: | |
pull_request: | |
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_gpu-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
builddeps: | |
runs-on: | |
- self-hosted | |
- ubuntu-22.04 | |
- gpu | |
strategy: | |
max-parallel: 1 | |
matrix: | |
os: [ubuntu-22.04] | |
pl_backend: ["lightning_gpu"] | |
steps: | |
- name: Validate GPU version and installed compiler | |
run: | | |
source /etc/profile.d/modules.sh | |
module use /opt/modules | |
module load cuda/11.8 | |
echo "${PATH}" >> $GITHUB_PATH | |
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}" >> $GITHUB_ENV | |
nvcc --version | |
nvidia-smi | |
cpptestswithLGPU_cu11: | |
needs: [builddeps] | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
pl_backend: ["lightning_gpu"] | |
name: C++ tests (Lightning-GPU) | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Validate GPU version and installed compiler | |
run: | | |
source /etc/profile.d/modules.sh | |
module use /opt/modules | |
module load cuda/11.8 | |
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@v3 | |
with: | |
path: main | |
fetch-depth: 2 | |
- uses: actions/setup-python@v4 | |
name: Install Python | |
with: | |
python-version: '3.9' | |
- 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 | |
- 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 python) | |
echo "PIP Path => $pip_path" | |
echo "pip=$pip_path" >> $GITHUB_OUTPUT | |
- name: Install required packages | |
run: | | |
python -m pip install ninja cmake custatevec-cu11 | |
- name: Install Latest PennyLane | |
if: inputs.pennylane-version == 'latest' | |
run: python -m pip install git+https://github.com/PennyLaneAI/pennylane.git@master | |
- 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 \ | |
-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 }} | |
for file in *runner ; do ./$file --order lex --reporter junit --out ./tests/results_${{ github.job }}_${{ matrix.pl_backend }}/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 }}.info | |
- name: Upload test results | |
uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: ubuntu-tests-reports-${{ github.job }}_${{ matrix.pl_backend }} | |
path: ./main/Build/tests/results_${{ github.job }}_${{ matrix.pl_backend }} | |
if-no-files-found: error | |
- name: Upload code coverage results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ubuntu-codecov-results-cpp | |
path: ./main/Build/coverage-${{ github.job }}-${{ matrix.pl_backend }}.info | |
if-no-files-found: error | |
pythontestswithLGPU: | |
needs: [builddeps, cpptestswithLGPU_cu11] | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
pl_backend: ["lightning_gpu"] | |
default_backend: ["lightning_qubit"] | |
name: Python tests with LGPU | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Validate GPU version and installed compiler | |
run: | | |
source /etc/profile.d/modules.sh | |
module use /opt/modules | |
module load cuda/11.8 | |
echo "${PATH}" >> $GITHUB_PATH | |
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}" >> $GITHUB_ENV | |
nvcc --version | |
nvidia-smi | |
- name: Checkout PennyLane-Lightning | |
uses: actions/checkout@v3 | |
with: | |
path: main | |
- uses: actions/setup-python@v4 | |
name: Install Python | |
with: | |
python-version: '3.9' | |
- 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 | |
source ${{ env.VENV_NAME }}/bin/activate | |
echo "venv_name=${{ env.VENV_NAME }}" >> $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 python) | |
echo "PIP Path => $pip_path" | |
echo "pip=$pip_path" >> $GITHUB_OUTPUT | |
- name: Install Latest PennyLane | |
# We want to install the latest PL on non workflow_call events | |
if: inputs.pennylane-version == 'latest' || inputs.pennylane-version == '' | |
run: python -m pip install git+https://github.com/PennyLaneAI/pennylane.git@master | |
- name: Install required packages | |
run: | | |
python -m pip install pip~=22.0 | |
python -m pip install ninja cmake custatevec-cu11 pytest pytest-mock flaky pytest-cov | |
- name: Build and install package | |
env: | |
CUQUANTUM_SDK: $(python -c "import site; print( f'{site.getsitepackages()[0]}/cuquantum')") | |
run: | | |
cd main | |
rm -rf build | |
CMAKE_ARGS="-DPL_BACKEND=${{ matrix.default_backend }} -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \ | |
python -m pip install -e . -vv | |
rm -rf build | |
rm -rf build | |
CMAKE_ARGS="-DPL_BACKEND=${{ matrix.pl_backend }} -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION) -DPython_EXECUTABLE=${{ steps.python_path.outputs.python }}" \ | |
python -m pip install -e . -vv | |
- name: Run PennyLane-Lightning-GPU unit tests | |
if: ${{ matrix.pl_backend != 'all'}} | |
env: | |
OMP_NUM_THREADS: 1 | |
OMP_PROC_BIND: false | |
run: | | |
cd main/ | |
DEVICENAME=`echo ${{ matrix.pl_backend }} | sed "s/_/./g"` | |
pl-device-test --device ${DEVICENAME} --skip-ops --shots=20000 $COVERAGE_FLAGS --cov-append | |
pl-device-test --device ${DEVICENAME} --shots=None --skip-ops $COVERAGE_FLAGS --cov-append | |
PL_DEVICE=${DEVICENAME} python -m pytest tests/ $COVERAGE_FLAGS | |
mv coverage.xml coverage-${{ github.job }}-${{ matrix.pl_backend }}.xml | |
- name: Install all backend devices | |
if: ${{ matrix.pl_backend == 'all' }} | |
env: | |
CUQUANTUM_SDK: $(python -c "import site; print( f'{site.getsitepackages()[0]}/cuquantum')") | |
run: | | |
cd main | |
rm -rf build | |
CMAKE_ARGS="-DPL_BACKEND=${{matrix.default_backend}} -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \ | |
python -m pip install -e . -vv | |
rm -rf build | |
CMAKE_ARGS="-DPL_BACKEND=${{ matrix.pl_backend }} -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \ | |
python -m pip install -e . -vv | |
- name: Run PennyLane-Lightning unit tests for lightning.qubit with all devices installed | |
if: ${{ matrix.pl_backend == 'all' }} | |
env: | |
OMP_NUM_THREADS: 1 | |
OMP_PROC_BIND: false | |
run: | | |
cd main/ | |
PL_DEVICE=lightning.qubit python -m pytest tests/ $COVERAGE_FLAGS | |
pl-device-test --device lightning.qubit --skip-ops --shots=20000 $COVERAGE_FLAGS --cov-append | |
pl-device-test --device lightning.qubit --shots=None --skip-ops $COVERAGE_FLAGS --cov-append | |
PL_DEVICE=lightning.gpu python -m pytest tests/ $COVERAGE_FLAGS | |
pl-device-test --device lightning.gpu --skip-ops --shots=20000 $COVERAGE_FLAGS --cov-append | |
pl-device-test --device lightning.gpu --shots=None --skip-ops $COVERAGE_FLAGS --cov-append | |
mv coverage.xml coverage-${{ github.job }}-${{ matrix.pl_backend }}.xml | |
- name: Upload code coverage results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ubuntu-codecov-results-python | |
path: ./main/coverage-${{ github.job }}-${{ matrix.pl_backend }}.xml | |
upload-to-codecov-linux-python: | |
needs: [pythontestswithLGPU] | |
name: Upload coverage data to codecov | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Download coverage reports | |
uses: actions/download-artifact@v3 | |
with: | |
name: ubuntu-codecov-results-python | |
- name: Upload to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
fail_ci_if_error: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
upload-to-codecov-linux-cpp: | |
needs: [cpptestswithLGPU_cu11] | |
name: Upload coverage data to codecov | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Download coverage reports | |
uses: actions/download-artifact@v3 | |
with: | |
name: ubuntu-codecov-results-cpp | |
- name: Upload to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
fail_ci_if_error: 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 |