Skip to content

Performance tuning #1246

Performance tuning

Performance tuning #1246

Workflow file for this run

name: test
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
env:
EIGEN3_INCLUDE_DIR: /eigen3/eigen-3.4.0
jobs:
pytest:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: true
matrix:
python-version: [3.8]
config:
- {
name: "Linux",
os: ubuntu-latest
}
- {
name: "MacOSX",
os: macos-latest
}
- {
name: "Windows",
os: windows-latest
}
defaults:
run:
shell: bash
steps:
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Checkout HEXRD
uses: actions/checkout@v3
with:
path: hexrd
- name: Checkout examples
uses: actions/checkout@v3
with:
repository: HEXRD/examples
path: examples
# post hexrd/hexrd#454 ref reverts to default branch
# !!! leaving this here in case we pin to a specific examples release
# ref:
- name: Set environment variable to work around setuptools/numpy issue
run: echo 'SETUPTOOLS_USE_DISTUTILS=stdlib' >> $GITHUB_ENV
if: ${{ matrix.config.os == 'windows-latest'}}
- name: Pin fabio to 0.12 on the Mac ( as binary wheel is available )
run: |
pip install fabio==0.12
if: ${{ matrix.config.os == 'macos-latest'}}
- name: Install Eigen on Linux
run: |
sudo apt-get update
sudo apt-get install -y libeigen3-dev
if: runner.os == 'Linux'
- name: Install Eigen on MacOS
run: |
brew update
brew install eigen
if: runner.os == 'macOS'
- name: Install Eigen on Windows
run: |
Invoke-WebRequest -Uri https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip -o eigen.zip
Expand-Archive -Path eigen.zip -DestinationPath C:\eigen3
cp -r C:\eigen3\eigen-3.4.0 D:/a/hexrd/hexrd/eigen
if: runner.os == 'Windows'
shell: pwsh
- name: Install xsimd on Linux
run: |
sudo apt-get update
sudo apt-get install -y cmake g++ wget unzip
wget -O xsimd.tar.gz https://github.com/xtensor-stack/xsimd/archive/refs/tags/7.4.10.tar.gz
tar -xf xsimd.tar.gz
cd xsimd-7.4.10
mkdir build
cd build
cmake ..
make -j$(nproc)
sudo make install
if: runner.os == 'Linux'
- name: Install xsimd on macOS
run: |
brew install cmake wget
wget -O xsimd.tar.gz https://github.com/xtensor-stack/xsimd/archive/refs/tags/7.4.10.tar.gz
tar -xf xsimd.tar.gz
cd xsimd-7.4.10
mkdir build
cd build
cmake ..
make -j$(sysctl -n hw.physicalcpu)
sudo make install
if: runner.os == 'macOS'
- name: Install xsimd on Windows
run: |
# Download and build xsimd from source
Invoke-WebRequest -Uri https://github.com/xtensor-stack/xsimd/archive/refs/tags/7.4.10.tar.gz -o xsimd.tar.gz
tar -xf xsimd.tar.gz
mv xsimd-7.4.10 xsimd
cd xsimd
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/xsimd ..
cmake --build .
cmake --install .
echo "XSIMD_INCLUDE_DIR=/xsimd/include" >> $GITHUB_ENV
if: runner.os == 'Windows'
shell: pwsh
- name: Set up environment variables for Eigen3 and xsimd
run: |
echo "EIGEN3_INCLUDE_DIR=$(pwd)/eigen" >> $GITHUB_ENV
echo "XSIMD_INCLUDE_DIR=$(pwd)/xsimd/include" >> $GITHUB_ENV
if: runner.os == 'Windows'
- name: Install HEXRD
run: |
pip install .
working-directory: hexrd
- name: Install requirements-dev.txt
run: |
pip install -r tests/requirements-dev.txt
working-directory: hexrd
- name: Run tests
env:
HEXRD_EXAMPLE_REPO_PATH: ${{ github.workspace }}/examples
run: |
pytest -s tests/
working-directory: hexrd