diff --git a/.github/workflows/test_suite_macos.yml b/.github/workflows/test_suite_macos.yml new file mode 100644 index 00000000..73445f41 --- /dev/null +++ b/.github/workflows/test_suite_macos.yml @@ -0,0 +1,122 @@ +# Workflow to run the FTorch test suite +name: TestSuiteMacOS + +# Controls when the workflow will run +on: + # Triggers the workflow on pushes to the "main" branch, i.e., PR merges + push: + branches: [ "main" ] + + # Triggers the workflow on pushes to open pull requests with code changes + pull_request: + paths: + - '.github/workflows/test_suite_macos.yml' + - '**.c' + - '**.cpp' + - '**.fypp' + - '**.f90' + - '**.F90' + - '**.pf' + - '**.py' + - '**.sh' + - '**CMakeLists.txt' + - '**requirements.txt' + - '**data/*' + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Cancel jobs running if new commits are pushed +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +# Workflow run - one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "test-suite-ubuntu" + test-suite-ubuntu: + # The type of runner that the job will run on + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + # Newest possible gcc on macos-latest (arm64) + - os: macos-latest + toolchain: {compiler: gcc, version: 13} + # Oldest possible gcc on macos-latest (arm64) + - os: macos-latest + toolchain: {compiler: gcc, version: 11} + # Newest possible gcc on macos (x86) + - os: macos-13 + toolchain: {compiler: gcc, version: 13} + - os: macos-12 + toolchain: {compiler: gcc, version: 13} + # Newest possible intel-classic on macos + - os: macos-14 + toolchain: {compiler: intel-classic, version: '2021.10'} + - os: macos-13 + toolchain: {compiler: intel-classic, version: '2021.10'} + - os: macos-12 + toolchain: {compiler: intel-classic, version: '2021.10'} + # Newest possible lfortran on macos + - os: macos-14 + toolchain: {compiler: lfortran, version: '0.33.0'} + - os: macos-13 + toolchain: {compiler: lfortran, version: '0.33.0'} + - os: macos-12 + toolchain: {compiler: lfortran, version: '0.33.0'} + + # 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 + with: + persist-credentials: false + 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 .. \ + -DPython_EXECUTABLE="$(which python)" \ + -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 \ + cmake --build . + cmake --install . + + - name: Integration tests + run: | + . ftorch/bin/activate + ./run_integration_tests.sh -V