Skip to content

!2195 [PY] Some basic many body system #266

!2195 [PY] Some basic many body system

!2195 [PY] Some basic many body system #266

Workflow file for this run

---
name: CI
on:
workflow_dispatch:
push:
branches-ignore:
- 'test'
pull_request:
env:
CMAKE_VERSION: 3.22.3
OMP_NUM_THREADS: 1
jobs:
standard:
if: ${{ true }}
strategy:
fail-fast: false
matrix:
runs-on: [ubuntu-latest]
python:
- 3.7
- 3.8
- 3.9
- '3.10'
include:
- test_install: false
- test_bdist_wheel: false
- python: 3.9
test_install: true
VENV_PYTHON_TEST_PKGS:
- python: 3.8
test_bdist_wheel: true
name: "Python ${{ matrix.python }} • ${{ matrix.runs-on }} • x64"
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v3
- name: Get history and tags for SCM versioning to work
if: env.ACT != 'true'
run: |
git fetch --prune --unshallow
git fetch --depth=1 origin +refs/tags/*:refs/tags/*¨
- name: Setup Python ${{ matrix.python }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
cache: 'pip'
- name: Prepare env
run: |
python3 -m pip install -U wheel build
sudo apt-get update && sudo apt-get install -y libboost-filesystem-dev --no-install-recommends
if [ ! "$(cat /etc/os-release | grep VERSION_ID | cut -d= -f2 | tr -d '"')" == "20.04" ]; then
sudo apt-get install -y glibc-tools --no-install-recommends
fi
- name: Setup CCache
uses: hendrikmuhs/ccache-action@v1.2.5
with:
key: ${{ matrix.runs-on }}-python-${{ matrix.python }}-ccache
max-size: 75M
- name: Cache CMake installer
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh
key: cmake-${{ env.CMAKE_VERSION }}
- name: Install latest CMake
run: |
if [ ! -e cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh ]; then
url_base='https://github.com/Kitware/CMake/releases/download'
wget ${url_base}/v${{ env.CMAKE_VERSION }}/cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh
fi
sudo bash cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh --skip-license --prefix=/usr/local
- name: Cache Python virtualenv
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: venv
key: >-
${{ matrix.runs-on }}-python-${{ matrix.python }}-python-venv
-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }}-${{ secrets.cache_ver }}
- name: Cache compiled third-party libraries
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: build/.mqlibs
key: >-
${{ matrix.runs-on }}-python-${{ matrix.python }}-third-party-libs-${{ hashFiles('third_party/**') }}
-${{ secrets.cache_ver }}
- name: Configure
run: |
./build_locally.sh --debug-cmake --ccache --no-gitee --debug \
--configure-only -c --clean-3rdparty --prefix="${{ github.workspace }}/install" \
--cmake-no-registry \
-- -DPython_FIND_UNVERSIONED_NAMES:STRING='FIRST'
- name: Build
run: ./build_locally.sh --debug-cmake --ccache
- name: Install
run: ./build_locally.sh --install # NB: no need to pass the other parameters
# ------------------------------------------------------------------------
- name: Test (setup.py) installation
if: matrix.test_bdist_wheel
env:
VENV_PYTHON_TEST_PKGS: ${{ matrix.VENV_PYTHON_TEST_PKGS }}
run: |
./build.sh --debug-cmake \
--fast-build --no-build-isolation --no-delocate --ccache --cmake-no-registry --no-gitee
- name: Test tests/st
run: |
pwd
source venv/bin/activate
export PYTHONPATH=`pwd`:$PYTHONPATH
which python
which python3
which pip
echo $PYTHONPATH
pip install -r requirements_test.txt
pip install pytest
python3 -c "import mindquantum as mq;print(mq.qft(range(3)))"
pytest tests/st -rs
# ============================================================================
macos:
if: ${{ true }}
runs-on: macos-11
name: "MacOS 11 • ${{ matrix.xcode }} • x64"
env:
DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
CC: /usr/bin/clang
CXX: /usr/bin/clang++
strategy:
fail-fast: false
matrix:
xcode:
- "Xcode_11.7" # Not available on macos-12
- "Xcode_12.4" # Not available on macos-12
- "Xcode_12.5.1" # Not available on macos-12
# - "Xcode_13.0" # Not available on macos-12
- "Xcode_13.1"
- "Xcode_13.2.1"
# - "Xcode_13.3.1" # macos-12 only
# - "Xcode_13.4.1" # macos-12 only
steps:
- uses: actions/checkout@v3
- name: Get history and tags for SCM versioning to work
if: env.ACT != 'true'
run: |
git fetch --prune --unshallow
git fetch --depth=1 origin +refs/tags/*:refs/tags/*¨
- name: Setup Python ${{ matrix.python }}
uses: actions/setup-python@v4
with:
python-version: 3.9
cache: 'pip'
- name: Prepare env
run: |
python3 -m pip install -U wheel build
brew install libomp ccache
- name: Setup CCache
uses: hendrikmuhs/ccache-action@v1.2.5
with:
key: macos-${{ matrix.xcode }}-ccache
max-size: 75M
- name: Cache Python virtualenv
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: venv
key: macos-python-venv-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }}-${{ secrets.cache_ver }}
- name: Cache compiled third-party libraries
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: build/.mqlibs
key: macos-${{ matrix.xcode }}-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }}
- name: Configure
run: >-
./build_locally.sh --debug-cmake --ccache --only-pytest --no-gitee --debug
--configure-only -c --clean-3rdparty --prefix="${{ github.workspace }}/install"
--cmake-no-registry
- name: Build
run: ./build_locally.sh --debug-cmake --ccache
- name: Install
run: ./build_locally.sh --install # NB: no need to pass the other parameters
- name: Test tests/st
run: |
pwd
source venv/bin/activate
export PYTHONPATH=`pwd`:$PYTHONPATH
which python
which python3
which pip
echo $PYTHONPATH
pip install -r requirements_test.txt
pip install pytest
python3 -c "import mindquantum as mq;print(mq.qft(range(3)))"
pytest tests/st -rs
# ============================================================================
gcc:
if: ${{ true }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
gcc:
- 7 # C++17 earliest version
- 8
- 9
- 10
- 11
- 12
name: "GCC ${{ matrix.gcc }} • x64"
container: "gcc:${{ matrix.gcc }}"
steps:
- uses: actions/checkout@v3
- name: Get history and tags for SCM versioning to work
run: |
git config --global --add safe.directory /__w/mindquantum/mindquantum
git fetch --prune --unshallow
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Prepare env
run: >
apt-get update && apt-get install -y python3-dev python3-pip python3-setuptools python3-wheel python3-venv
libboost-filesystem-dev gdb --no-install-recommends
- name: Setup CCache
uses: hendrikmuhs/ccache-action@v1.2.5
with:
key: gcc-${{ matrix.gcc }}-ccache
max-size: 75M
- name: Cache CMake installer
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh
key: cmake-${{ env.CMAKE_VERSION }}
- name: Install latest CMake
run: |
if [ ! -e cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh ]; then
url_base='https://github.com/Kitware/CMake/releases/download'
wget ${url_base}/v${{ env.CMAKE_VERSION }}/cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh
fi
bash cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh --skip-license --prefix=/usr/local
- name: Cache Python virtualenv
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: venv
key: >-
gcc-${{ matrix.gcc }}-python-venv-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }}
-${{ secrets.cache_ver }}
- name: Cache compiled third-party libraries
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: build/.mqlibs
key: gcc-${{ matrix.gcc }}-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }}
- name: Configure
run: >-
./build_locally.sh --debug-cmake --ccache --only-pytest --no-gitee --debug
--configure-only -c --logging --clean-3rdparty --prefix="${{ github.workspace }}/install"
--cmake-no-registry -- -DENABLE_STACK_PROTECTION=ON
- name: Build
run: ./build_locally.sh --debug-cmake --ccache
- name: Install
run: ./build_locally.sh --install # NB: no need to pass the other parameters
- name: Run debugger in case of failure
if: ${{ failure() }}
run: |
cd build
ctest --output-on-failure > ctest_output.txt || true
sed -e '1,/The following tests FAILED:/ d' ctest_output.txt \
| cut -d '-' -f2 \
| sed -e 's/ (SEGFAULT)//' -e 's/ *$//g' -e 's/^ *//g' > failed_tests.txt
ctest -V -N \
| grep 'Test command' \
| cut -d ':' -f3 \
| sed -e 's/ *$//g' -e 's/^ *//g' > test_commands.txt
while read name; do
echo "Processing $name"
cmd=$(grep "$name" test_commands.txt)
if [ -z "$cmd" ]; then
echo " -> skipping because cannot find command in command list!"
continue
fi
# lines are of the form /path/to/test/executable "Some Filter"
program=$(echo "$cmd" \
| cut -d'"' -f1\
| sed -e 's/ *$//g' -e 's/^ *//g')
args=$(echo "$cmd" \
| sed -e "s|$program||" -e 's/ *$//g' -e 's/^ *//g')
if [ -z "$program" ]; then
echo " -> skipping because cannot extract program from command line!"
continue
elif [ ! -x "$program" ]; then
echo " -> skipping because program is not an executable! ($program)"
continue
fi
gdb --batch -ex 'run' -ex 'thread apply all bt' -ex 'quit' --args "$program" "$args"
# lldb --batch -o "file $program" -o "run $args" -k 'bt all' -o 'quit'
done < failed_tests.txt
- name: Save tests executable in case of failure
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: test-executables-gcc-${{ matrix.gcc }}
retention-days: 5
path: |
build/tests
!build/tests/**/Makefile
!build/tests/**/*.*
- name: Test tests/st
shell: bash
run: |
pwd
source venv/bin/activate
export PYTHONPATH=`pwd`:$PYTHONPATH
which python
which python3
which pip
echo $PYTHONPATH
pip install -r requirements_test.txt
pip install pytest
python3 -c "import mindquantum as mq;print(mq.qft(range(3)))"
pytest tests/st -rs
# ============================================================================
clang:
if: ${{ true }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
clang:
- 7
- 8
- 9
- 10 # first version for full C++17 support (with patches)
- 11
- 12
- 13
- 14
env:
CC: clang
CXX: clang++
name: "Clang ${{ matrix.clang }} • x64"
container: "silkeh/clang:${{ matrix.clang }}"
steps:
- uses: actions/checkout@v3
- name: install git
run: |
apt-get update && apt-get install -y git
- name: install libomp-${{ matrix.clang }}-dev
run: |
apt-get update && apt-get install -y libomp-${{ matrix.clang }}-dev
- name: Get history and tags for SCM versioning to work
run: |
ls -alth
# pwd
# git config --global --add safe.directory /__w/mindquantum/mindquantum
# git fetch --prune --unshallow
# git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Prepare env
run: >
apt-get update && apt-get install -y python3-dev python3-pip python3-setuptools python3-wheel python3-venv
gdb --no-install-recommends
- name: Setup CCache
uses: hendrikmuhs/ccache-action@v1.2.5
with:
key: clang-${{ matrix.clang }}-ccache
max-size: 75M
- name: Cache CMake installer
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh
key: cmake-${{ env.CMAKE_VERSION }}
- name: Install latest CMake
run: |
if [ ! -e cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh ]; then
url_base='https://github.com/Kitware/CMake/releases/download'
wget ${url_base}/v${{ env.CMAKE_VERSION }}/cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh
fi
bash cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh --skip-license --prefix=/usr/local
- name: Cache Python virtualenv
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: venv
key: >-
clang-${{ matrix.clang }}-python-venv-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }}
-${{ secrets.cache_ver }}
- name: Cache compiled third-party libraries
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: build/.mqlibs
key: clang-${{ matrix.clang }}-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }}
- name: Configure (Clang)
if: matrix.clang != '8'
run: >-
./build_locally.sh --debug-cmake --ccache --only-pytest --no-gitee --debug
--configure-only -c --clean-3rdparty --prefix="${{ github.workspace }}/install"
--cmake-no-registry -- -DENABLE_STACK_PROTECTION=ON
# Due to compiler segmentation fault with Clang 8 in debug mode
- name: Configure (Clang 8)
if: matrix.clang == '8'
run: >-
./build_locally.sh --debug-cmake --ccache --only-pytest --no-gitee
--configure-only -c --clean-3rdparty --prefix="${{ github.workspace }}/install"
--cmake-no-registry -- -DENABLE_STACK_PROTECTION=ON
- name: Build
run: ./build_locally.sh --debug-cmake --ccache
- name: Install
run: ./build_locally.sh --install # NB: no need to pass the other parameters
- name: Run debugger in case of failure
if: ${{ failure() }}
run: |
cd build
ctest --output-on-failure > ctest_output.txt || true
sed -e '1,/The following tests FAILED:/ d' ctest_output.txt \
| cut -d '-' -f2 \
| sed -e 's/ (SEGFAULT)//' -e 's/ *$//g' -e 's/^ *//g' > failed_tests.txt
ctest -V -N \
| grep 'Test command' \
| cut -d ':' -f3 \
| sed -e 's/ *$//g' -e 's/^ *//g' > test_commands.txt
while read name; do
echo "Processing $name"
cmd=$(grep "$name" test_commands.txt)
if [ -z "$cmd" ]; then
echo " -> skipping because cannot find command in command list!"
continue
fi
# lines are of the form /path/to/test/executable "Some Filter"
program=$(echo "$cmd" \
| cut -d'"' -f1\
| sed -e 's/ *$//g' -e 's/^ *//g')
args=$(echo "$cmd" \
| sed -e "s|$program||" -e 's/ *$//g' -e 's/^ *//g')
if [ -z "$program" ]; then
echo " -> skipping because cannot extract program from command line!"
continue
fi
gdb --batch -ex 'run' -ex 'thread apply all bt' -ex 'quit' --args "$program" "$args"
# lldb --batch -o "file $program" -o "run $args" -k 'bt all' -o 'quit'
done < failed_tests.txt
- name: Save tests executable in case of failure
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: test-executables-clang-${{ matrix.clang }}
retention-days: 5
path: |
build/tests
!build/tests/**/Makefile
!build/tests/**/*.*
- name: Test tests/st
shell: bash
run: |
pwd
source venv/bin/activate
export PYTHONPATH=`pwd`:$PYTHONPATH
which python
which python3
which pip
echo $PYTHONPATH
pip install -r requirements_test.txt
pip install pytest
python3 -c "import mindquantum as mq;print(mq.qft(range(3)))"
pytest tests/st -rs
# ============================================================================
msvc:
if: ${{ true }}
runs-on: windows-latest
name: "MSVC • x64"
steps:
- uses: actions/checkout@v3
- name: Get history and tags for SCM versioning to work
run: |
git fetch --prune --unshallow
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Enable Developer Command Prompt
uses: ilammy/msvc-dev-cmd@v1.12.0
- name: Install Scoop && Scoop packages
run: |
iwr -useb get.scoop.sh -outfile 'install.ps1'
.\install.ps1 -RunAsAdmin
Join-Path (Resolve-Path ~).Path "scoop\shims" >> $Env:GITHUB_PATH
scoop install ccache
- name: Get Date
id: get-date
shell: bash
run: echo "date=$(date -Iseconds)" >> $GITHUB_OUTPUT
- name: Restore cache for CCache
if: env.ACT != 'true'
id: ccache-cache
uses: martijnhols/actions-cache/restore@v3.0.11b
with:
path: ccache
key: msvc-ccache-${{ steps.get-date.outputs.date }}
restore-keys: msvc-ccache-
- name: Configure CCache
run: |
ccache --set-config=cache_dir="$PWD/ccache"
ccache --set-config=max_size=250M
ccache --set-config=compression=true
ccache -pz
ccache -sv
- name: Cache Python virtualenv
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: venv
key: msvc-python-venv-${{ hashFiles('build_locally.ps1', 'scripts/build/**.ps1') }}-${{ secrets.cache_ver }}
- name: Cache compiled third-party libraries
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: build/.mqlibs
key: msvc-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }}
- name: Configure
env:
CC: cl
CXX: cl
run: >-
./build_locally.ps1 -DebugCmake -Ninja -CCache -OnlyPytest -NoGitee
-ConfigureOnly -C -Clean3rdParty -Prefix "${{ github.workspace }}/install"
-CMakeNoRegistry
-DUSE_PARALLEL_STL=OFF
- name: Build
run: ./build_locally.ps1 -DebugCmake -Ninja -CCache
- name: Install
run: ./build_locally.ps1 -Install
- name: Print CCache statistics
run: |
ccache -sv
- name: Save cache for CCache
if: env.ACT != 'true'
uses: martijnhols/actions-cache/save@v3.0.11b
with:
path: ccache
key: msvc-ccache-${{ steps.get-date.outputs.date }}
# ============================================================================
clang-cl:
if: ${{ true }}
runs-on: windows-latest
name: "Clang-Cl • x64"
steps:
- uses: actions/checkout@v3
- name: Get history and tags for SCM versioning to work
run: |
git fetch --prune --unshallow
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Enable Developer Command Prompt
uses: ilammy/msvc-dev-cmd@v1.12.0
- name: Install Scoop && Scoop packages
run: |
iwr -useb get.scoop.sh -outfile 'install.ps1'
.\install.ps1 -RunAsAdmin
Join-Path (Resolve-Path ~).Path "scoop\shims" >> $Env:GITHUB_PATH
scoop install ccache
- name: Get Date
id: get-date
shell: bash
run: echo "date=$(date -Iseconds)" >> $GITHUB_OUTPUT
- name: Restore cache for CCache
if: env.ACT != 'true'
id: ccache-cache
uses: martijnhols/actions-cache/restore@v3.0.11b
with:
path: ccache
key: clang-cl-ccache-${{ steps.get-date.outputs.date }}
restore-keys: clang-cl-ccache-
- name: Configure CCache
run: |
ccache --set-config=cache_dir="$PWD/ccache"
ccache --set-config=max_size=70M
ccache --set-config=compression=true
ccache -pz
ccache -sv
- name: Cache Python virtualenv
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: venv
key: >
clang-cl-python-venv-${{ hashFiles('build_locally.ps1', 'scripts/build/**.ps1') }}-${{ secrets.cache_ver }}
- name: Cache compiled third-party libraries
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: build/.mqlibs
key: clang-cl-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }}
- name: Configure
env:
CC: clang-cl
CXX: clang-cl
run: >-
./build_locally.ps1 -DebugCmake -Ninja -CCache -OnlyPytest -NoGitee
-ConfigureOnly -C -Clean3rdParty -Prefix "${{ github.workspace }}/install"
-CMakeNoRegistry -Verbose
-DUSE_PARALLEL_STL=OFF
- name: Build
run: ./build_locally.ps1 -DebugCmake -Ninja -CCache -Verbose
- name: Install
run: ./build_locally.ps1 -Install
- name: Print CCache statistics
run: |
ccache -sv
- name: Save cache for CCache
if: env.ACT != 'true'
uses: martijnhols/actions-cache/save@v3.0.11b
with:
path: ccache
key: clang-cl-ccache-${{ steps.get-date.outputs.date }}
# ============================================================================
mingw64:
if: ${{ true }}
runs-on: windows-2022
strategy:
fail-fast: false
name: "MINGW64 • x64"
steps:
- uses: actions/checkout@v3
- name: Get history and tags for SCM versioning to work
run: |
git fetch --prune --unshallow
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
# - name: Setup CCache
# uses: hendrikmuhs/ccache-action@v1.2.5
# with:
# key: mingw64-ccache
# max-size: 75M
- name: Cache Python virtualenv
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: venv
key: >-
mingw64-python-venv-${{ hashFiles('build_locally.ps1', 'scripts/build/**.ps1') }}-${{ secrets.cache_ver }}
- name: Cache compiled third-party libraries
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: build/.mqlibs
key: mingw64-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }}
- name: Set up MinGW64
uses: egor-tensin/setup-mingw@v2
id: mingw64-setup
continue-on-error: true
with:
platform: x64
- name: Setup CC and CXX
if: steps.mingw64-setup.outcome == 'success'
env:
CC: ${{ steps.mingw64-setup.outputs.gcc }}
CXX: ${{ steps.mingw64-setup.outputs.gxx }}
run: |
"CC='$Env:CC'" >> $Env:GITHUB_ENV
"CXX='$Env:CXX'" >> $Env:GITHUB_ENV
- name: Set up MinGW64 (2nd try)
uses: egor-tensin/setup-mingw@v2
if: steps.mingw64-setup.outcome == 'failure'
id: mingw64-setup-2
continue-on-error: false
with:
platform: x64
- name: Setup CC and CXX
if: steps.mingw64-setup-2.outcome == 'success'
env:
CC: ${{ steps.mingw64-setup-2.outputs.gcc }}
CXX: ${{ steps.mingw64-setup-2.outputs.gxx }}
run: |
"CC='$Env:CC'" >> $Env:GITHUB_ENV
"CXX='$Env:CXX'" >> $Env:GITHUB_ENV
- name: Configure
run: >-
./build_locally.ps1 -DebugCmake -Ninja -OnlyPytest -NoGitee
-ConfigureOnly -C -Clean3rdParty -Prefix "${{ github.workspace }}/install"
-CMakeNoRegistry
--% -G "MinGW Makefiles" -DUSE_PARALLEL_STL=OFF
- name: Build
run: ./build_locally.ps1 -DebugCmake -Ninja
- name: Install
run: ./build_locally.ps1 -Install
# ============================================================================
msys2:
if: ${{ true }}
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
include:
- msystem: MINGW64
installdeps: >-
git
patch
make
mingw-w64-x86_64-toolchain
mingw-w64-x86_64-cmake
mingw-w64-x86_64-ccache
mingw-w64-x86_64-gmp
mingw-w64-x86_64-boost
mingw-w64-x86_64-python
mingw-w64-x86_64-python-pip
CC: gcc
CXX: g++
- msystem: CLANG64
installdeps: >-
git
patch
make
mingw-w64-clang-x86_64-toolchain
mingw-w64-clang-x86_64-cmake
mingw-w64-clang-x86_64-ccache
mingw-w64-clang-x86_64-gmp
mingw-w64-clang-x86_64-boost
mingw-w64-clang-x86_64-python
mingw-w64-clang-x86_64-python-pip
CC: clang
CXX: clang++
- msystem: UCRT64
installdeps: >-
git
patch
make
mingw-w64-ucrt-x86_64-toolchain
mingw-w64-ucrt-x86_64-cmake
mingw-w64-ucrt-x86_64-ccache
mingw-w64-ucrt-x86_64-gmp
mingw-w64-ucrt-x86_64-boost
mingw-w64-ucrt-x86_64-python
mingw-w64-ucrt-x86_64-python-pip
CC: gcc
CXX: g++
name: "MSYS2 ${{ matrix.msystem }} • x64"
steps:
- uses: actions/checkout@v3
- name: Get history and tags for SCM versioning to work
run: |
git fetch --prune --unshallow
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Setup MSYS
uses: msys2/setup-msys2@v2
with:
install: ${{ matrix.installdeps }}
msystem: ${{ matrix.msystem }}
path-type: strict
update: false
- name: Get Date
id: get-date
shell: msys2 {0}
run: echo "date=$(date -Iseconds)" >> $GITHUB_OUTPUT
- name: Restore cache for CCache
if: env.ACT != 'true' && matrix.msystem != 'MSYS'
id: ccache-cache
uses: martijnhols/actions-cache/restore@v3.0.11b
with:
path: ccache
key: msys2-${{ matrix.msystem }}-ccache-${{ steps.get-date.outputs.date }}
restore-keys: msys2-${{ matrix.msystem }}-ccache-
- name: Configure CCache
shell: msys2 {0}
run: |
which ccache
ccache --help
ccache --set-config=cache_dir="$PWD/ccache"
ccache --set-config=max_size=75M
ccache --set-config=compression=true
ccache -pz
ccache -sv
- name: Cache Python virtualenv
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: venv
key: >-
msys2-${{ matrix.msystem }}-python-venv-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }}
-${{ secrets.cache_ver }}
- name: Cache compiled third-party libraries
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: build/.mqlibs
key: msys2-${{ matrix.msystem }}-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }}
- name: Configure
shell: msys2 {0}
env:
CC: ${{ matrix.CC }}
CXX: ${{ matrix.CXX }}
run: >-
./build_locally.sh --debug-cmake --ccache -v --only-pytest --no-gitee
--configure-only -c --clean-3rdparty --prefix="$PWD/install"
--cmake-no-registry
-- -G "MSYS Makefiles"
- name: Build
shell: msys2 {0}
env:
CC: ${{ matrix.CC }}
CXX: ${{ matrix.CXX }}
run: ./build_locally.sh --debug-cmake --ccache
- name: Install
shell: msys2 {0}
env:
CC: ${{ matrix.CC }}
CXX: ${{ matrix.CXX }}
run: ./build_locally.sh --install
- name: Print CCache statistics
shell: msys2 {0}
run: |
ccache -sv
- name: Save cache for CCache
if: env.ACT != 'true'
uses: martijnhols/actions-cache/save@v3.0.11b
with:
path: ccache
key: msys2-${{ matrix.msystem }}-ccache-${{ steps.get-date.outputs.date }}
# ============================================================================
cuda:
if: ${{ true }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
cuda:
- 11.0.3-devel-ubuntu20.04
- 11.1.1-devel-ubuntu20.04
- 11.8.0-devel-ubuntu22.04
name: "CUDA ${{ matrix.cuda }} • x64"
container: "nvidia/cuda:${{ matrix.cuda }}"
steps:
- name: Install and setup Git
run: |
apt-get update && apt-get upgrade -y
DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata
apt-get install -y software-properties-common
add-apt-repository -y ppa:git-core/ppa
apt-get update && apt-get install -y git
git config --global --add safe.directory $PWD
- uses: actions/checkout@v3
- name: Get history and tags for SCM versioning to work
run: |
git fetch --prune --unshallow
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Install Python
run: >-
apt-get install -y python3-dev python3-pip python3-setuptools python3-wheel
python3-venv --no-install-recommends
- name: Prepare env
run: >-
apt-get install -y autoconf automake binutils coreutils m4 gawk libtool gettext wget curl
--no-install-recommends
- name: Setup CCache
uses: hendrikmuhs/ccache-action@v1.2.5
with:
key: cuda-${{ matrix.cuda }}-ccache
max-size: 75M
- name: Cache Python virtualenv
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: venv
key: >-
cuda-${{ matrix.cuda }}-python-venv-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }}
-${{ secrets.cache_ver }}
- name: Cache compiled third-party libraries
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: build/.mqlibs
key: cuda-${{ matrix.cuda }}-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }}
- name: Configure
run: >-
./build_locally.sh --debug-cmake --gpu --ccache --only-pytest --no-gitee
--configure-only -c --clean-3rdparty --prefix="${{ github.workspace }}/install"
--cmake-no-registry
- name: Build
run: ./build_locally.sh --debug-cmake --gpu --ccache
- name: Install
run: ./build_locally.sh --install
- name: Test tests/st
shell: bash
run: |
pwd
source venv/bin/activate
export PYTHONPATH=`pwd`:$PYTHONPATH
which python
which python3
which pip
echo $PYTHONPATH
pip install -r requirements_test.txt
pip install pytest
python3 -c "import mindquantum as mq;print(mq.qft(range(3)))"
pytest tests/st -rs
# ============================================================================
nvhpc:
if: ${{ true }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
nvhpc:
- 21.5-devel-cuda11.3
- 22.3-devel-cuda11.6
env:
CC: gcc
CXX: g++
name: "NVHPC ${{ matrix.nvhpc }} • x64"
container: "nvcr.io/nvidia/nvhpc:${{ matrix.nvhpc }}-ubuntu20.04"
steps:
- uses: actions/checkout@v3
- name: Get history and tags for SCM versioning to work
run: |
git fetch --prune --unshallow
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Prepare env
run: >
apt-get update && apt-get install -y python3-dev python3-pip python3-setuptools python3-wheel python3-venv
libboost-filesystem-dev --no-install-recommends
- name: Setup CCache
uses: hendrikmuhs/ccache-action@v1.2.5
with:
key: nvhpc-${{ matrix.nvhpc }}-ccache
max-size: 75M
- name: Cache CMake installer
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh
key: cmake-${{ env.CMAKE_VERSION }}
- name: Install latest CMake
run: |
if [ ! -e cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh ]; then
url_base='https://github.com/Kitware/CMake/releases/download'
wget ${url_base}/v${{ env.CMAKE_VERSION }}/cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh
fi
bash cmake-${{ env.CMAKE_VERSION }}-linux-x86_64.sh --skip-license --prefix=/usr/local
- name: Cache Python virtualenv
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: venv
key: >-
nvhpc-${{ matrix.nvhpc }}-python-venv-${{ hashFiles('build_locally.sh', 'scripts/build/**.sh') }}
-${{ secrets.cache_ver }}
- name: Cache compiled third-party libraries
if: env.ACT != 'true'
uses: actions/cache@v3
with:
path: build/.mqlibs
key: nvhpc-${{ matrix.nvhpc }}-third-party-libs-${{ hashFiles('third_party/**') }}-${{ secrets.cache_ver }}
- name: Configure
run: >-
./build_locally.sh --debug-cmake --gpu --ccache --only-pytest --no-gitee
--configure-only -c --clean-3rdparty --prefix="${{ github.workspace }}/install"
--cmake-no-registry
- name: Build
run: ./build_locally.sh --debug-cmake --gpu --ccache
- name: Install
run: ./build_locally.sh --install