Skip to content

core: mps_dir

core: mps_dir #766

Workflow file for this run

name: build
on:
push:
branches: [ master ]
tags:
- v*
- p*
pull_request:
branches: [ master ]
workflow_dispatch:
permissions:
contents: write
pages: write
id-token: write
jobs:
test:
name: test ${{ matrix.python }} ${{ matrix.os }} ${{ matrix.parallel }} ${{ matrix.plat }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-20.04, macos-13, macos-14, windows-2022 ]
python: [ '3.13-dev' ]
plat: [ x86_64 ]
parallel: [ mpi, serial, serial-pytest, any-symm-pytest, main-test ]
exclude:
- os: macos-13
parallel: mpi
- os: macos-14
parallel: mpi
- os: windows-2022
parallel: mpi
include:
- os: ubuntu-20.04
python: '3.12'
plat: wasm
parallel: serial
fail-fast: false
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: install requirements (linux / macos)
if: (matrix.os == 'macos-13' || matrix.os == 'ubuntu-20.04') && matrix.plat == 'x86_64'
env:
MKLROOT: ~/.local
run: |
python -m pip install pip build twine setuptools --upgrade
python -m pip install mkl==2021.4 mkl-include intel-openmp numpy 'cmake>=3.19' pybind11==2.12.0
- name: install requirements (linux emscripten)
if: matrix.os == 'ubuntu-20.04' && matrix.plat == 'wasm'
run: |
python -m pip install pip build twine setuptools --upgrade
python -m pip install pyodide-build numpy 'cmake>=3.19' pybind11==2.12.0
- name: setup emscripten (linux emscripten)
if: matrix.os == 'ubuntu-20.04' && matrix.plat == 'wasm'
run: |
git clone -b main https://github.com/emscripten-core/emsdk.git
cd emsdk
PYODIDE_EMSCRIPTEN_VERSION=$(pyodide config get emscripten_version)
echo $PYODIDE_EMSCRIPTEN_VERSION
./emsdk install ${PYODIDE_EMSCRIPTEN_VERSION}
./emsdk activate ${PYODIDE_EMSCRIPTEN_VERSION}
source ./emsdk_env.sh
cd ..
em++ -v
- name: install requirements (linux / macos)
if: matrix.os == 'macos-14'
run: |
python -m pip install pip build twine setuptools --upgrade
python -m pip install numpy 'cmake>=3.19' pybind11==2.12.0
- name: install requirements (linux / mpi)
if: matrix.parallel == 'mpi' && matrix.os == 'ubuntu-20.04'
run: |
sudo apt-get install libopenmpi-dev
python -m pip install mpi4py
- name: install requirements (windows)
if: matrix.os == 'windows-2022'
run: |
python -m pip install pip build twine setuptools --upgrade
python -m pip install intel-openmp==2024.1.0 numpy 'cmake>=3.19' pybind11==2.12.0
- name: Download OpenBLAS (linux emscripten)
if: matrix.os == 'ubuntu-20.04' && matrix.plat == 'wasm'
run: |
wget -q https://github.com/pyodide/pyodide/releases/download/0.26.3/xbuildenv-0.26.3.tar.bz2
tar xjf xbuildenv-0.26.3.tar.bz2
- name: build gtest (linux emscripten)
if: matrix.os == 'ubuntu-20.04' && matrix.plat == 'wasm'
env:
GTESTROOT: ~/gtest
run: |
source emsdk/emsdk_env.sh
git clone -b release-1.8.0 https://github.com/google/googletest
cd googletest
export GTEST_ROOT=$PWD/googletest/install
CC=emcc CXX=em++ emcmake cmake CMakeLists.txt -DCMAKE_INSTALL_PREFIX=${GTESTROOT} -Dgtest_disable_pthreads=ON
emmake make -j 4
emmake make install
- name: Download OpenBLAS (windows)
if: matrix.os == 'windows-2022'
env:
BLAS_ROOT: D:\a\openblas
run: |
$file = "https://github.com/OpenMathLib/OpenBLAS/releases/download/v0.3.27/OpenBLAS-0.3.27-x64.zip"
Invoke-WebRequest -Uri $file -OutFile "OpenBLAS-0.3.27-x64.zip"
Expand-Archive -Path "OpenBLAS-0.3.27-x64.zip" -DestinationPath $env:BLAS_ROOT
- name: build gtest (windows)
if: matrix.os == 'windows-2022' && matrix.parallel == 'serial'
env:
GTEST_ROOT: D:\a\gtest
run: |
Get-WmiObject -Class Win32_Processor
git clone -b release-1.8.0 https://github.com/google/googletest.git
cd googletest
cmake -G "Visual Studio 17 2022" -S . -B . -DCMAKE_CXX_FLAGS="-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING" -Dgtest_force_shared_crt=ON
cmake --build . -j 2 --config Release
cmake --install . --prefix $env:GTEST_ROOT
- name: build gtest (linux)
if: matrix.os == 'ubuntu-20.04' && matrix.plat == 'x86_64'
env:
CC: gcc-9
CXX: g++-9
run: |
lscpu
sudo apt-get install libgtest-dev
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make
sudo cp lib/*.a /usr/lib
- name: fix mkl for amd cpu
if: matrix.os == 'ubuntu-20.04' && matrix.plat == 'x86_64'
env:
CC: gcc-9
CXX: g++-9
run: |
lscpu
export CPUTYPE=$(lscpu | grep 'Vendor ID' | awk '{print $3}')
echo $CPUTYPE
if [ "$CPUTYPE" = "AuthenticAMD" ]; then
echo "int mkl_serv_intel_cpu_true() { return 1; }" > fixcpu.c
$CC -shared -fPIC -o libfixcpu.so fixcpu.c
fi
getconf LONG_BIT
- name: build gtest (macos)
if: matrix.os == 'macos-13'
env:
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
run: |
git clone -b release-1.8.0 https://github.com/google/googletest
cd googletest
cmake CMakeLists.txt
make
make install
brew update
brew install libomp
cp /usr/local/opt/libomp/include/*.h /usr/local/include/
- name: build gtest (macos)
if: matrix.os == 'macos-14'
env:
GTESTROOT: ~/gtest
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
run: |
git clone -b release-1.8.0 https://github.com/google/googletest
cd googletest
cmake CMakeLists.txt -DCMAKE_INSTALL_PREFIX=${GTESTROOT}
make
make install
brew update
brew install libomp
- name: build test (serial-pytest, linux | macos)
if: |
(matrix.parallel == 'serial-pytest' || matrix.parallel == 'main-test') &&
(matrix.os == 'ubuntu-20.04' || matrix.os == 'macos-13') && matrix.plat == 'x86_64'
env:
MKLROOT: ~/.local
MACOSX_DEPLOYMENT_TARGET: '11.0'
CC: gcc-9
CXX: g++-9
run: |
mkdir build
cd build
cmake --version
cmake .. -DUSE_MKL=ON -DBUILD_LIB=ON -DLARGE_BOND=ON -DUSE_COMPLEX=ON -DUSE_SG=ON
make -j 2
- name: build test (serial-pytest, macos-arm64)
if: (matrix.parallel == 'serial-pytest' || matrix.parallel == 'main-test') && matrix.os == 'macos-14'
env:
MACOSX_DEPLOYMENT_TARGET: '11.0'
CC: gcc-9
CXX: g++-9
run: |
mkdir build
cd build
cmake --version
export OMPROOT=$(brew --prefix libomp)
cmake .. -DUSE_MKL=OFF -DARCH_ARM64=ON -DCMAKE_CXX_FLAGS=-I${OMPROOT}/include -DOMP_LIB=OMP \
-DBUILD_LIB=ON -DLARGE_BOND=ON -DUSE_COMPLEX=ON -DUSE_SG=ON -DFORCE_LIB_ABS_PATH=OFF \
-DAPPLE_ACC_SINGLE_PREC=OFF
make -j 2
- name: build test (serial-pytest, windows)
if: (matrix.parallel == 'serial-pytest' || matrix.parallel == 'main-test') && matrix.os == 'windows-2022'
env:
BLAS_ROOT: D:\a\openblas
run: |
${env:OMPROOT} = "${env:Python_ROOT_DIR}\Library"
mkdir build
cd build
cmake --version
cmake -G "Visual Studio 17 2022" -S .. -B . -DUSE_MKL=OFF -DBUILD_LIB=ON -DLARGE_BOND=ON -DUSE_COMPLEX=ON -DUSE_SG=ON
cmake --build . -j 2 --config Release -- '/v:d'
- name: build test (any-symm-pytest, linux | macos)
if: matrix.parallel == 'any-symm-pytest' && (matrix.os == 'ubuntu-20.04' || matrix.os == 'macos-13') && matrix.plat == 'x86_64'
env:
MKLROOT: ~/.local
MACOSX_DEPLOYMENT_TARGET: '11.0'
CC: gcc-9
CXX: g++-9
run: |
mkdir build
cd build
cmake --version
cmake .. -DUSE_MKL=ON -DBUILD_LIB=ON -DLARGE_BOND=ON -DUSE_COMPLEX=ON -DUSE_SU2SZ=OFF -DUSE_SANY=ON
make -j 2
- name: build test (any-symm-pytest, macos-arm64)
if: matrix.parallel == 'any-symm-pytest' && matrix.os == 'macos-14'
env:
MACOSX_DEPLOYMENT_TARGET: '11.0'
CC: gcc-9
CXX: g++-9
run: |
mkdir build
cd build
cmake --version
export OMPROOT=$(brew --prefix libomp)
cmake .. -DUSE_MKL=OFF -DARCH_ARM64=ON -DCMAKE_CXX_FLAGS=-I${OMPROOT}/include -DBUILD_LIB=ON -DOMP_LIB=OMP \
-DLARGE_BOND=ON -DUSE_COMPLEX=ON -DUSE_SU2SZ=OFF -DUSE_SANY=ON -DFORCE_LIB_ABS_PATH=OFF \
-DAPPLE_ACC_SINGLE_PREC=OFF
make -j 2
- name: build test (any-symm-pytest, windows)
if: matrix.parallel == 'any-symm-pytest' && matrix.os == 'windows-2022'
env:
BLAS_ROOT: D:\a\openblas
run: |
${env:OMPROOT} = "${env:Python_ROOT_DIR}\Library"
mkdir build
cd build
cmake --version
cmake -G "Visual Studio 17 2022" -S .. -B . -DUSE_MKL=OFF -DBUILD_LIB=ON -DLARGE_BOND=ON -DUSE_COMPLEX=ON -DUSE_SU2SZ=OFF -DUSE_SANY=ON
cmake --build . -j 2 --config Release -- '/v:d'
- name: build test (serial, windows)
if: matrix.parallel == 'serial' && matrix.os == 'windows-2022'
env:
GTEST_ROOT: D:\a\gtest
BLAS_ROOT: D:\a\openblas
run: |
${env:OMPROOT} = "${env:Python_ROOT_DIR}\Library"
mkdir build_test
cd build_test
cmake -G "Visual Studio 17 2022" -S .. -B . -DUSE_MKL=OFF -DBUILD_TEST=ON -DLARGE_BOND=ON -DUSE_COMPLEX=ON -DUSE_SG=ON
cmake --build . -j 2 --config Release -- '/v:d'
- name: build test (serial, linux emscripten)
if: matrix.parallel == 'serial' && matrix.os == 'ubuntu-20.04' && matrix.plat == 'wasm'
env:
GTESTROOT: ~/gtest
run: |
source emsdk/emsdk_env.sh
export BLAS_ROOT=$PWD/xbuildenv/pyodide-root/packages/.libs
mkdir build_test
cd build_test
cmake --version
CC=emcc CXX=em++ cmake .. -DUSE_MKL=OFF -DARCH_EMSCRIPTEN=ON -DF77UNDERSCORE=ON -DBUILD_TEST=ON \
-DGTEST_ROOT=${GTESTROOT} -DLARGE_BOND=ON -DUSE_COMPLEX=OFF -DUSE_DMRG=ON \
-DSIMPLE_TEST=ON -DCMAKE_BUILD_TYPE=Release -DOMP_LIB=NONE
emmake make -j 2
- name: build test (serial, linux)
if: matrix.parallel == 'serial' && matrix.os == 'ubuntu-20.04' && matrix.plat == 'x86_64'
env:
MKLROOT: ~/.local
CC: gcc-9
CXX: g++-9
run: |
mkdir build_test
cd build_test
cmake --version
cmake .. -DUSE_MKL=ON -DBUILD_TEST=ON -DLARGE_BOND=ON -DUSE_COMPLEX=ON -DUSE_SINGLE_PREC=ON -DUSE_SG=ON
make -j 2
- name: build test (serial, macos)
if: matrix.parallel == 'serial' && matrix.os == 'macos-13'
env:
MKLROOT: ~/.local
MACOSX_DEPLOYMENT_TARGET: '11.0'
run: |
mkdir build_test
cd build_test
cmake --version
cmake .. -DUSE_MKL=ON -DBUILD_TEST=ON -DLARGE_BOND=ON -DUSE_COMPLEX=ON -DUSE_SINGLE_PREC=ON -DUSE_SG=ON
make -j 2
- name: build test (serial, macos-arm64)
if: matrix.parallel == 'serial' && matrix.os == 'macos-14'
env:
GTESTROOT: ~/gtest
MACOSX_DEPLOYMENT_TARGET: '11.0'
run: |
mkdir build_test
cd build_test
cmake --version
export OMPROOT=$(brew --prefix libomp)
cmake .. -DUSE_MKL=OFF -DARCH_ARM64=ON -DCMAKE_CXX_FLAGS=-I${OMPROOT}/include -DBUILD_TEST=ON -DOMP_LIB=OMP \
-DLARGE_BOND=ON -DUSE_COMPLEX=ON -DUSE_SINGLE_PREC=OFF -DUSE_SG=ON -DGTEST_ROOT=${GTESTROOT} \
-DFORCE_LIB_ABS_PATH=OFF -DSIMPLE_TEST=ON
make -j 2
- name: run test (serial, windows)
if: matrix.parallel == 'serial' && matrix.os == 'windows-2022'
env:
GTEST_ROOT: D:\a\gtest
BLAS_ROOT: D:\a\openblas
run: |
cd build_test/Release
Copy-Item -Path "..\data" -Destination ".\" -Recurse
$env:PATH = "${env:BLAS_ROOT}\bin;" + $env:PATH
$env:PATH = "${env:Python_ROOT_DIR}\Library\bin;" + $env:PATH
$vcpath = Get-ChildItem 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC'
$dumpbin = "$($vcpath[0].FullName)\bin\Hostx64\x64\dumpbin.exe"
& $dumpbin /DEPENDENTS .\block2_tests.exe
.\block2_tests.exe
- name: run test (serial, linux emscripten)
if: matrix.parallel == 'serial' && matrix.os == 'ubuntu-20.04' && matrix.plat == 'wasm'
run: |
source emsdk/emsdk_env.sh
cd build_test
node block2_tests.js
- name: run test (serial, linux)
if: matrix.parallel == 'serial' && matrix.os == 'ubuntu-20.04' && matrix.plat == 'x86_64'
run: |
export CPUTYPE=$(lscpu | grep 'Vendor ID' | awk '{print $3}')
if [ "$CPUTYPE" = "AuthenticAMD" ]; then
export LD_PRELOAD=$PWD/libfixcpu.so
fi
cd build_test
./block2_tests
- name: run test (serial, macos)
if: matrix.parallel == 'serial' && (matrix.os == 'macos-13' || matrix.os == 'macos-14')
run: |
cd build_test
./block2_tests
- name: run test (serial-pytest, windows)
if: matrix.parallel == 'serial-pytest' && matrix.os == 'windows-2022'
env:
BLAS_ROOT: D:\a\openblas
run: |
$vcpath = Get-ChildItem 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC'
$dumpbin = "$($vcpath[0].FullName)\bin\Hostx64\x64\dumpbin.exe"
& $dumpbin /DEPENDENTS .\build\Release\block2.cp313-win_amd64.pyd
$xpwd = Get-Location
$env:PYTHONPATH = "${xpwd};${xpwd}\build\Release;" + $env:PYTHONPATH
$env:PATH = "${env:BLAS_ROOT}\bin;" + $env:PATH
$env:PATH = "${env:Python_ROOT_DIR}\Library\bin;" + $env:PATH
$env:PATH = "${env:Python_ROOT_DIR};" + $env:PATH
$env:PATH = "$($vcpath[0].FullName)\bin\Hostx64\x64;" + $env:PATH
python -m pip install pytest
python -m pytest -s pyblock2/unit_test/dmrg.py pyblock2/unit_test/dmrg_mpo.py pyblock2/unit_test/dmrg_npdm.py --fd_data=${xpwd}/data
- name: run test (serial-pytest, linux)
if: matrix.parallel == 'serial-pytest' && matrix.os == 'ubuntu-20.04'
run: |
python -m pip install pytest 'pyscf==2.6.2' 'scipy==1.14.1'
export PYTHONPATH=$(pwd)/build:$(pwd):${PYTHONPATH}
export CPUTYPE=$(lscpu | grep 'Vendor ID' | awk '{print $3}')
if [ "$CPUTYPE" = "AuthenticAMD" ]; then
export LD_PRELOAD=$PWD/libfixcpu.so
fi
echo $LD_PRELOAD
py.test -s pyblock2/unit_test/*.py
- name: run test (serial-pytest, macos)
if: matrix.parallel == 'serial-pytest' && (matrix.os == 'macos-13' || matrix.os == 'macos-14')
run: |
python -m pip install pytest 'pyscf==2.6.2' 'scipy==1.14.1'
export PYTHONPATH=$(pwd)/build:$(pwd):${PYTHONPATH}
py.test -s pyblock2/unit_test/*.py
- name: run test (main-test, windows)
if: matrix.parallel == 'main-test' && matrix.os == 'windows-2022'
env:
BLAS_ROOT: D:\a\openblas
run: |
$vcpath = Get-ChildItem 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC'
$dumpbin = "$($vcpath[0].FullName)\bin\Hostx64\x64\dumpbin.exe"
& $dumpbin /DEPENDENTS .\build\Release\block2.cp313-win_amd64.pyd
$xpwd = Get-Location
$env:PYTHONPATH = "${xpwd};${xpwd}\build\Release;" + $env:PYTHONPATH
$env:PATH = "${env:BLAS_ROOT}\bin;" + $env:PATH
$env:PATH = "${env:Python_ROOT_DIR}\Library\bin;" + $env:PATH
$env:PATH = "${env:Python_ROOT_DIR};" + $env:PATH
$env:PATH = "$($vcpath[0].FullName)\bin\Hostx64\x64;" + $env:PATH
$env:block2main = "${xpwd}\pyblock2\driver\block2main"
python -m pip install 'scipy==1.14.1'
cd pyblock2\main_test
.\run-test.ps1
- name: run test (main-test, linux)
if: matrix.parallel == 'main-test' && matrix.os == 'ubuntu-20.04'
run: |
python -m pip install pytest 'pyscf==2.6.2' 'scipy==1.14.1'
export PYTHONPATH=$(pwd)/build:$(pwd):${PYTHONPATH}
export PATH=$(pwd)/pyblock2/driver:$PATH
export CPUTYPE=$(lscpu | grep 'Vendor ID' | awk '{print $3}')
if [ "$CPUTYPE" = "AuthenticAMD" ]; then
export LD_PRELOAD=$PWD/libfixcpu.so
fi
echo $LD_PRELOAD
cd pyblock2/main_test
./run-test.sh
- name: run test (main-test, macos)
if: matrix.parallel == 'main-test' && (matrix.os == 'macos-13' || matrix.os == 'macos-14')
run: |
python -m pip install pytest 'pyscf==2.6.2' 'scipy==1.14.1'
export PYTHONPATH=$(pwd)/build:$(pwd):${PYTHONPATH}
export PATH=$(pwd)/pyblock2/driver:$PATH
cd pyblock2/main_test
./run-test.sh
- name: run test (any-symm-pytest, windows)
if: matrix.parallel == 'any-symm-pytest' && matrix.os == 'windows-2022'
env:
BLAS_ROOT: D:\a\openblas
run: |
$vcpath = Get-ChildItem 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC'
$dumpbin = "$($vcpath[0].FullName)\bin\Hostx64\x64\dumpbin.exe"
& $dumpbin /DEPENDENTS .\build\Release\block2.cp313-win_amd64.pyd
$xpwd = Get-Location
$env:PYTHONPATH = "${xpwd};${xpwd}\build\Release;" + $env:PYTHONPATH
$env:PATH = "${env:BLAS_ROOT}\bin;" + $env:PATH
$env:PATH = "${env:Python_ROOT_DIR}\Library\bin;" + $env:PATH
$env:PATH = "${env:Python_ROOT_DIR};" + $env:PATH
$env:PATH = "$($vcpath[0].FullName)\bin\Hostx64\x64;" + $env:PATH
python -m pip install pytest
python -m pytest -s pyblock2/unit_test/dmrg.py pyblock2/unit_test/dmrg_mpo.py pyblock2/unit_test/dmrg_npdm.py --symm sany --fd_data=${xpwd}/data
- name: run test (any-symm-pytest, linux)
if: matrix.parallel == 'any-symm-pytest' && matrix.os == 'ubuntu-20.04'
run: |
python -m pip install pytest 'pyscf==2.6.2' 'scipy==1.14.1'
export PYTHONPATH=$(pwd)/build:$(pwd):${PYTHONPATH}
export CPUTYPE=$(lscpu | grep 'Vendor ID' | awk '{print $3}')
if [ "$CPUTYPE" = "AuthenticAMD" ]; then
export LD_PRELOAD=$PWD/libfixcpu.so
fi
echo $LD_PRELOAD
py.test -s pyblock2/unit_test/*.py --symm sany
- name: run test (any-symm-pytest, macos)
if: matrix.parallel == 'any-symm-pytest' && (matrix.os == 'macos-13' || matrix.os == 'macos-14')
run: |
python -m pip install pytest 'pyscf==2.6.2' 'scipy==1.14.1'
export PYTHONPATH=$(pwd)/build:$(pwd):${PYTHONPATH}
py.test -s pyblock2/unit_test/*.py --symm sany
- name: build test (mpi)
if: matrix.parallel == 'mpi'
env:
MKLROOT: ~/.local
run: |
sed -i "s|unit_test/test_|unit_test/mpi/test_|" CMakeLists.txt
mkdir build_test
cd build_test
cmake .. -DUSE_MKL=ON -DBUILD_TEST=ON -DLARGE_BOND=ON -DMPI=ON -DUSE_COMPLEX=ON -DUSE_SINGLE_PREC=ON -DUSE_SG=ON
make -j 1 # memory issue of mpi compiler
- name: run test (mpi)
if: matrix.parallel == 'mpi'
run: |
export CPUTYPE=$(lscpu | grep 'Vendor ID' | awk '{print $3}')
if [ "$CPUTYPE" = "AuthenticAMD" ]; then
export LD_PRELOAD=$PWD/libfixcpu.so
fi
cd build_test
mpirun -n 2 ./block2_tests
build:
name: build ${{ matrix.python }} ${{ matrix.os }} ${{ matrix.plat }} ${{ matrix.parallel }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-20.04, macos-13, windows-2022, macos-14 ]
python: [ '3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13-dev' ]
manylinux: [ 2014 ]
plat: [ x86_64, arm64 ]
parallel: [ mpi, serial ]
exclude:
- os: macos-13
parallel: mpi
- os: macos-14
parallel: mpi
- os: macos-13
plat: arm64
- os: macos-14
plat: x86_64
- os: macos-14
python: '3.7'
- os: ubuntu-20.04
plat: arm64
- os: windows-2022
parallel: mpi
- os: windows-2022
plat: arm64
fail-fast: false
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: install requirements (linux / macos)
if: matrix.os == 'macos-13' || matrix.os == 'ubuntu-20.04'
env:
MKLROOT: ~/.local
run: |
export PYT=$(which python)
python -m pip install pip build twine setuptools --upgrade
python -m pip install mkl==2021.4 mkl-include intel-openmp numpy 'cmake>=3.19' pybind11==2.12.0
- name: install requirements (linux / macos)
if: matrix.os == 'macos-14'
env:
MKLROOT: ~/.local
run: |
export PYT=$(which python)
python -m pip install pip build twine setuptools --upgrade
python -m pip install numpy 'cmake>=3.19' pybind11==2.12.0
- name: install requirements (windows)
if: matrix.os == 'windows-2022'
env:
BLAS_ROOT: D:\a\openblas
run: |
python -m pip install pip build twine setuptools --upgrade
python -m pip install intel-openmp==2024.1.0 numpy 'cmake>=3.19' pybind11==2.12.0
$file = "https://github.com/OpenMathLib/OpenBLAS/releases/download/v0.3.27/OpenBLAS-0.3.27-x64.zip"
Invoke-WebRequest -Uri $file -OutFile "OpenBLAS-0.3.27-x64.zip"
Expand-Archive -Path "OpenBLAS-0.3.27-x64.zip" -DestinationPath $env:BLAS_ROOT
- name: build wheels (windows)
if: startsWith(github.ref, 'refs/tags/') && matrix.os == 'windows-2022'
env:
TAG_STRING: ${{ github.event.ref }}
BLAS_ROOT: D:\a\openblas
run: |
$tagstr = ${env:TAG_STRING}.Substring(11)
echo $tagstr
sed -i "s/version=.*/version=`"${tagstr}`",/" setup.py
sed -i "/mkl/d" setup.py
sed -i "/scipy/d" setup.py
sed -i "/DUSE_SINGLE_PREC/d" setup.py
sed -i "/DUSE_MKL/c \ '-DUSE_MKL=OFF'," setup.py
sed -i "/DBUILD_EXE/c \ '-DBUILD_EXE=OFF'," setup.py
sed -i "/ `"block2`"/d" setup.py
${env:OMPROOT} = "${env:Python_ROOT_DIR}\Library"
cmake --version
python -m pip install wheel delvewheel==1.7.1
python -m pip wheel . -w ./dist --no-deps
$env:PATH = "${env:BLAS_ROOT}\bin;" + $env:PATH
$env:PATH = "${env:Python_ROOT_DIR}\Library\bin;" + $env:PATH
$env:PATH = "${env:Python_ROOT_DIR};" + $env:PATH
$vcpath = Get-ChildItem 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC'
$env:PATH = "$($vcpath[0].FullName)\bin\Hostx64\x64;" + $env:PATH
$rr = Get-ChildItem -Path dist/*.whl
Write-Output "$($rr[0].FullName)"
delvewheel repair "$($rr[0].FullName)" -v -w dist
- name: build wheels (macos-x86_64)
if: startsWith(github.ref, 'refs/tags/') && matrix.os == 'macos-13' && matrix.plat == 'x86_64'
env:
TAG_STRING: ${{ github.event.ref }}
MACOSX_DEPLOYMENT_TARGET: '11.0'
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
run: |
brew update
brew install libomp
cp /usr/local/opt/libomp/include/*.h /usr/local/include/
brew install gnu-sed
export PATH=/usr/local/opt/gnu-sed/bin:$PATH
echo ${TAG_STRING:11}
gsed -i "s/version=.*/version='${TAG_STRING:11}',/" setup.py
# if use mkl, will need iomp5
gsed -i "/DUSE_MKL/a \ '-DOMP_LIB=OMP'," setup.py
gsed -i "/mkl/d" setup.py
gsed -i "/intel-openmp/d" setup.py
gsed -i "/DUSE_MKL/c \ '-DUSE_MKL=OFF'," setup.py
gsed -i "/DUSE_MKL/a \ '-DFORCE_LIB_ABS_PATH=OFF'," setup.py
export OMPROOT=$(brew --prefix libomp)
echo ${OMPROOT}
cmake --version
python -m pip install wheel delocate==0.10.7
python -m pip wheel . -w ./dist --no-deps
export DYLD_LIBRARY_PATH=$(python -c "import site;print(':'.join(x+'/../..' for x in site.getsitepackages()))")
# prevent delocating libomp
export DELO_PY=$(cat $(which delocate-wheel) | head -1 | awk -F'!' '{print $2}')
export DELO_DE=$(${DELO_PY} -c "from delocate import delocating;print(delocating.__file__)")
gsed -i '/r_ed_base = base/a \ if "libomp" in required: needs_delocating.add(required); continue' ${DELO_DE}
gsed -i '/new_install_name =/a \ if "libomp" in required: new_install_name = "/usr/local/opt/libomp/lib/libomp.dylib"' ${DELO_DE}
delocate-wheel -k dist/*.whl
- name: build wheels (macos-arm64)
if: startsWith(github.ref, 'refs/tags/') && matrix.os == 'macos-14' && matrix.plat == 'arm64'
env:
TAG_STRING: ${{ github.event.ref }}
MACOSX_DEPLOYMENT_TARGET: '11.0'
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
run: |
brew update
brew install libomp
brew install gnu-sed
export PATH=/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH
echo ${TAG_STRING:11}
export OMPROOT=$(brew --prefix libomp)
echo ${OMPROOT}
gsed -i "s/version=.*/version='${TAG_STRING:11}',/" setup.py
gsed -i "/DUSE_MKL/a \ '-DOMP_LIB=OMP'," setup.py
gsed -i "/DUSE_MKL/a \ '-DARCH_ARM64=ON'," setup.py
gsed -i "/DUSE_MKL/a \ '-DFORCE_LIB_ABS_PATH=OFF'," setup.py
gsed -i "/DUSE_MKL/a \ '-DCMAKE_CXX_FLAGS=-I${OMPROOT}/include'," setup.py
gsed -i "/mkl/d" setup.py
gsed -i "/intel-openmp/d" setup.py
gsed -i "/DUSE_MKL/c \ '-DUSE_MKL=OFF'," setup.py
cmake --version
python -m pip install wheel delocate==0.10.7
export _PYTHON_HOST_PLATFORM="macosx-14.0-arm64"
export SDKROOT=/Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
export PLAT="arm64"
python -m pip wheel . -w ./dist --no-deps
delocate-wheel --require-archs=arm64 -k dist/*.whl
- name: prepare build wheels (manylinux)
if: startsWith(github.ref, 'refs/tags/') && matrix.os == 'ubuntu-20.04'
env:
TAG_STRING: ${{ github.event.ref }}
run: |
echo ${TAG_STRING:11}
sed -i "s/version=.*/version='${TAG_STRING:11}',/" setup.py
cp ./.github/actions/build-wheel/Dockerfile.manylinux${{ matrix.manylinux }} ./.github/actions/build-wheel/Dockerfile
- name: build wheels (manylinux)
if: startsWith(github.ref, 'refs/tags/') && matrix.os == 'ubuntu-20.04'
uses: ./.github/actions/build-wheel
with:
python-version: ${{ matrix.python }}
parallel: ${{ matrix.parallel }}
- name: release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: dist/*
- name: upload artifacts
if: startsWith(github.ref, 'refs/tags/')
uses: actions/upload-artifact@v4
with:
name: dist-${{ matrix.parallel }}-${{ matrix.python }}-${{ matrix.os }}-${{ matrix.plat }}
path: dist
retention-days: 2
pypi:
name: pypi
needs: [build, test]
runs-on: ubuntu-20.04
if: startsWith(github.ref, 'refs/tags/')
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.13-dev'
- name: build source dist (serial)
env:
TAG_STRING: ${{ github.event.ref }}
run: |
echo ${TAG_STRING:11}
sed -i "s/version=.*/version='${TAG_STRING:11}',/" setup.py
python -m pip install pip build twine setuptools --upgrade
python -m build --sdist
- name: release (serial)
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: dist/*
- name: build source dist (mpi)
env:
TAG_STRING: ${{ github.event.ref }}
run: |
rm -r dist
echo ${TAG_STRING:11}
sed -i "/DUSE_MKL/a \ '-DMPI=ON'," setup.py
sed -i "s/name=\"block2\"/name=\"block2-mpi\"/g" setup.py
sed -i "s/version=.*/version='${TAG_STRING:11}',/" setup.py
python -m build --sdist
stat dist/block2_mpi-${TAG_STRING:11}.tar.gz
- name: release (mpi)
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: dist/*
- name: build index
env:
REPO: ${{ github.repository }}
run: |
python .github/workflows/build_pypi.py ${REPO} ./idx-dist/pypi
- name: setup pages
uses: actions/configure-pages@v5
- name: upload artifacts
uses: actions/upload-pages-artifact@v3
with:
path: './idx-dist'
- name: deploy to gitHub pages
id: deployment
uses: actions/deploy-pages@v4
publish:
name: publish
needs: [build, test]
runs-on: ubuntu-20.04
if: startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.13-dev'
- name: build source dist (serial)
env:
TAG_STRING: ${{ github.event.ref }}
run: |
echo ${TAG_STRING:11}
sed -i "s/version=.*/version='${TAG_STRING:11}',/" setup.py
python -m pip install pip build twine setuptools --upgrade
python -m build --sdist
- name: download wheels (serial)
uses: actions/download-artifact@v4
with:
pattern: dist-serial-*
path: dist
merge-multiple: true
- name: publish to pypi (serial)
uses: pypa/gh-action-pypi-publish@release/v1
- name: build source dist (mpi)
env:
TAG_STRING: ${{ github.event.ref }}
run: |
rm -r dist
echo ${TAG_STRING:11}
sed -i "/DUSE_MKL/a \ '-DMPI=ON'," setup.py
sed -i "s/name=\"block2\"/name=\"block2-mpi\"/g" setup.py
sed -i "s/version=.*/version='${TAG_STRING:11}',/" setup.py
python -m build --sdist
- name: download wheels (mpi)
uses: actions/download-artifact@v4
with:
pattern: dist-mpi-*
path: dist
merge-multiple: true
- name: publish to pypi (mpi)
uses: pypa/gh-action-pypi-publish@release/v1