Skip to content

Use Fortran setup in workflows to access multiple compilers. #118

Use Fortran setup in workflows to access multiple compilers.

Use Fortran setup in workflows to access multiple compilers. #118

Workflow file for this run

# workflow to run the FTorch test suite
name: TestSuite
# Controls when the workflow will run
on:
# Triggers the workflow on pushes to the "main" branch and any pull request events
push:
branches: [ "main"]
pull_request:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Workflow run - one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "test-suite"
test-suite:
# The type of runner that the job will run on
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
# - macos-latest
# - windows-latest
toolchain:
- {compiler: gcc, version: 13}
- {compiler: gcc, version: 12}
- {compiler: gcc, version: 11}
- {compiler: gcc, version: 10}
- {compiler: gcc, version: 9}
- {compiler: intel, version: '2024.1'}
- {compiler: intel-classic, version: '2021.10'}
# - {compiler: nvidia-hpc, version: '23.11'}
std: ["f2008", "f2018"]
include:
# Run 2018 Fortran standards on latest gcc only
- toolchain: {compiler: gcc, version: 13}
std: "f2018"
# Newest possible gcc on macos-latest (arm64)
- os: macos-latest
toolchain: {compiler: gcc, version: 13}
std: "f2008"
# Oldest possible gcc and standard on macos-latest (arm64)
- os: macos-latest
toolchain: {compiler: gcc, version: 11}
std: "f2008"
# Newest possible intel-classic and standard on newest compatible macos
- os: macos-14
toolchain: {compiler: intel-classic, version: '2021.10'}
std: "f2018"
# exclude:
# - os: windows-latest
# toolchain: {compiler: nvidia-hpc, version: '23.11'}
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Checkout code
uses: actions/checkout@v4
- name: setup-fortran
uses: fortran-lang/setup-fortran@v1
with:
compiler: ${{ matrix.toolchain.compiler }}
version: ${{ matrix.toolchain.version }}
- name: check-compilers-env
run: |
${{ steps.setup-fortran.outputs.fc }}
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install PyTorch
run: |
python -m pip install --upgrade pip
python -m venv ftorch
. ftorch/bin/activate
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
- name: Build FTorch
run: |
. ftorch/bin/activate
VN=$(python -c "import sys; print('.'.join(sys.version.split('.')[:2]))")
export Torch_DIR=${VIRTUAL_ENV}/lib/python${VN}/site-packages
export BUILD_DIR=$(pwd)/src/build
mkdir ${BUILD_DIR}
cd ${BUILD_DIR}
cmake .. -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_Fortran_COMPILER=${{ env.FC }} \
-DCMAKE_C_COMPILER=${{ env.CC }} \
-DCMAKE_CXX_COMPILER=${{ env.CXX }} \
-DCMAKE_INSTALL_PREFIX=${BUILD_DIR}\
-DCMAKE_BUILD_TESTS=TRUE \
-DCMAKE_Fortran_FLAGS="-std=${{ matrix.std }}"
cmake --build .
cmake --install .
- name: Integration tests
run: |
. ftorch/bin/activate
./run_integration_tests.sh