Skip to content

Commit

Permalink
240609.202532.HKT [skip ci] further revise yml files regarding gfortr…
Browse files Browse the repository at this point in the history
…an setup
  • Loading branch information
zaikunzhang committed Jun 9, 2024
1 parent ee389bc commit ef6c287
Show file tree
Hide file tree
Showing 6 changed files with 374 additions and 0 deletions.
113 changes: 113 additions & 0 deletions .github/workflows/recursive_test_matlab.yml
Original file line number Diff line number Diff line change
Expand Up @@ -126,3 +126,116 @@ jobs:
- name: Miscellaneous setup
run: bash .github/scripts/misc_setup

- name: Decide gfortran version for MATLAB on Linux
if: startsWith(matrix.os, 'ubuntu')
run: |
GFVER=12
if [[ "${{ matrix.os }}" = "ubuntu-20.04" ]] ; then
GFVER=11
fi
if [[ "${{ matrix.matlab }}" = "R2020b" || "${{ matrix.matlab }}" = "R2021a" ]] ; then
GFVER=9
fi
echo "GFVER=$GFVER" >> $GITHUB_ENV
- name: Set up gfortran on Linux
if: startsWith(matrix.os, 'ubuntu')
uses: fortran-lang/setup-fortran@main
with:
compiler: gcc
version: ${{ env.GFVER }}
- name: Check gfortran version on Linux
if: startsWith(matrix.os, 'ubuntu')
run: which gfortran && gfortran --version

- name: Decide the version of oneAPI to use
shell: bash
run: |
ONEAPI_VERSION=
if [[ "${{ matrix.os }}" = "windows-"* ]] ; then
if [[ "${{ matrix.matlab }}" = "R2020"* || "${{ matrix.matlab }}" = "R2021"* || "${{ matrix.matlab }}" = "R2022"* || "${{ matrix.matlab }}" = "R2023"* ]] ; then
ONEAPI_VERSION=2023
fi
fi
echo "ONEAPI_VERSION=$ONEAPI_VERSION" >> $GITHUB_ENV
echo "ONEAPI_VERSION:" $ONEAPI_VERSION
- name: Install Intel oneAPI on macOS
if: startsWith(matrix.os, 'macos')
run: bash .github/scripts/install_oneapi_macos.sh $ONEAPI_VERSION

- name: Install Intel oneAPI on Windows
if: startsWith(matrix.os, 'windows')
run: cmd.exe "/K" '".github\scripts\install_oneapi_windows.bat %ONEAPI_VERSION%"'

- name: Set up MATLAB with optimization toolbox
uses: matlab-actions/setup-matlab@v2.1.2
with:
release: ${{ matrix.matlab }}
cache: true
products: Optimization_Toolbox Parallel_Computing_Toolbox

- name: Conduct the test
uses: matlab-actions/run-command@v2.1.1
with:
command: |
ver;
root_dir = pwd();
cd(fullfile(root_dir, 'matlab/tests'));
options = struct();
if ~isempty('${{ inputs.random-seed }}')
options.seed = str2num('${{ inputs.random-seed }}');
end
if ~isempty('${{ inputs.dimension }}')
options.n = str2num('${{ inputs.dimension }}');
end
if ~isempty('${{ inputs.depth }}')
options.depth = str2num('${{ inputs.depth }}');
end
options
% Conduct the test multiple times, in case some errors occur not during the first time but later.
exception = [];
try
recursive('${{ matrix.solver }}', options);
options.compile = false;
% Test parallel invocation of the solvers
parfor i = 1 : 2
recursive('${{ matrix.solver }}', options);
end
catch exception
end
% Copy the crash dump files to root_dir if exceptions occur.
if ~isempty(exception)
copy_crash_dump_files(root_dir)
dir(root_dir)
rethrow(exception);
end
- name: Store artifacts
uses: actions/upload-artifact@v4.3.1
if: always() # Always run even if the workflow is canceled manually or due to overtime.
with:
name: ${{ matrix.solver }}
path: |
matlab_crash_dump*
# The following job check whether the tests were successful or cancelled due to timeout.
# N.B.: Remember to specify `continue-on-error: true` for the job of the tests.
check_success_timeout:
runs-on: ubuntu-latest
if: ${{ !cancelled() }}
needs: test
steps:
- name: Clone the GitHub actions scripts
uses: actions/checkout@v4
with:
repository: equipez/github_actions_scripts
ssh-key: ${{ secrets.SSH_PRIVATE_KEY_ACT }} # This forces checkout to use SSH, not HTTPS
path: scripts

- name: Check whether the tests were successful or cancelled due to timeout
run: bash scripts/check_success_timeout ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} ${{ github.run_id }}
91 changes: 91 additions & 0 deletions .github/workflows/stress_test_matlab.yml
Original file line number Diff line number Diff line change
Expand Up @@ -124,3 +124,94 @@ jobs:
- name: Miscellaneous setup
run: bash .github/scripts/misc_setup

- name: Decide gfortran version for MATLAB on Linux
if: startsWith(matrix.os, 'ubuntu')
run: |
GFVER=12
if [[ "${{ matrix.os }}" = "ubuntu-20.04" ]] ; then
GFVER=11
fi
if [[ "${{ matrix.matlab }}" = "R2020b" || "${{ matrix.matlab }}" = "R2021a" ]] ; then
GFVER=9
fi
echo "GFVER=$GFVER" >> $GITHUB_ENV
- name: Set up gfortran on Linux
if: startsWith(matrix.os, 'ubuntu')
uses: fortran-lang/setup-fortran@main
with:
compiler: gcc
version: ${{ env.GFVER }}
- name: Check gfortran version on Linux
if: startsWith(matrix.os, 'ubuntu')
run: which gfortran && gfortran --version

- name: Decide the version of oneAPI to use
shell: bash
run: |
ONEAPI_VERSION=
if [[ "${{ matrix.os }}" = "windows-"* ]] ; then
if [[ "${{ matrix.matlab }}" = "R2020"* || "${{ matrix.matlab }}" = "R2021"* || "${{ matrix.matlab }}" = "R2022"* || "${{ matrix.matlab }}" = "R2023"* ]] ; then
ONEAPI_VERSION=2023
fi
fi
echo "ONEAPI_VERSION=$ONEAPI_VERSION" >> $GITHUB_ENV
echo "ONEAPI_VERSION:" $ONEAPI_VERSION
- name: Install Intel oneAPI on macOS
if: startsWith(matrix.os, 'macos')
run: bash .github/scripts/install_oneapi_macos.sh $ONEAPI_VERSION

- name: Install Intel oneAPI on Windows
if: startsWith(matrix.os, 'windows')
run: cmd.exe "/K" '".github\scripts\install_oneapi_windows.bat %ONEAPI_VERSION%"'

- name: Set up MATLAB with optimization toolbox
uses: matlab-actions/setup-matlab@v2.1.2
with:
release: ${{ matrix.matlab }}
cache: true
products: Optimization_Toolbox Parallel_Computing_Toolbox

- name: Revise the Fortran code to alternate the integer kind.
shell: bash
run: |
IK=$(( 2**(4 + $(date +%-d) % 3) ))
$SEDI "s|#define PRIMA_INTEGER_KIND 0|#define PRIMA_INTEGER_KIND ${IK}|g" fortran/common/ppf.h
cat fortran/common/ppf.h
- name: Conduct the test
uses: matlab-actions/run-command@v2.1.1
with:
command: |
ver;
root_dir = pwd();
cd(fullfile(root_dir, 'matlab/tests'));
options = struct();
if ~isempty('${{ inputs.random-seed }}')
options.seed = str2num('${{ inputs.random-seed }}');
end
options.tough = strcmp('${{ matrix.test }}', 'tough');
if ~isempty('${{ inputs.precision }}')
options.precision = '${{ inputs.precision }}';
else
options.precision = 'date';
end
stress('${{ matrix.solver }}', options);
# The following job check whether the tests were successful or cancelled due to timeout.
# N.B.: Remember to specify `continue-on-error: true` for the job of the tests.
check_success_timeout:
runs-on: ubuntu-latest
if: ${{ !cancelled() }}
needs: test
steps:
- name: Clone the GitHub actions scripts
uses: actions/checkout@v4
with:
repository: equipez/github_actions_scripts
ssh-key: ${{ secrets.SSH_PRIVATE_KEY_ACT }} # This forces checkout to use SSH, not HTTPS
path: scripts

- name: Check whether the tests were successful or cancelled due to timeout
run: bash scripts/check_success_timeout ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} ${{ github.run_id }}
53 changes: 53 additions & 0 deletions .github/workflows/test_matlab.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,3 +119,56 @@ jobs:
# $SEDI "s/cstrv = maxval(\[ZERO, -constr\])/cstrv = maxval([\ZERO, -constr\])\n write(*,*) 'x = ', x(1:n)\n write(*,*) 'f = ', f\n write(*,*) 'constr = ', constr(1:m)\n write(*,*) 'cstrv = ', cstrv/" cobylb.f
# cat cobylb.f

- name: Decide gfortran version for MATLAB on Linux
if: startsWith(matrix.os, 'ubuntu')
run: |
GFVER=${{ env.GFORTRAN_VERSION }}
if [[ "${{ matrix.os }}" = "ubuntu-20.04" ]] ; then
GFVER=11
fi
if [[ "${{ matrix.matlab }}" = "R2020b" || "${{ matrix.matlab }}" = "R2021a" || "${{ matrix.matlab }}" = "R2021b" ]] ; then
GFVER=9
fi
echo "GFVER=$GFVER" >> $GITHUB_ENV
- name: Set up gfortran on Linux
if: startsWith(matrix.os, 'ubuntu')
uses: fortran-lang/setup-fortran@main
with:
compiler: gcc
version: ${{ env.GFVER }}
- name: Check gfortran version on Linux
if: startsWith(matrix.os, 'ubuntu')
run: which gfortran && gfortran --version

- name: Decide the version of oneAPI to use
shell: bash
run: |
ONEAPI_VERSION=
if [[ "${{ matrix.os }}" = "windows-"* ]] ; then
if [[ "${{ matrix.matlab }}" = "R2020"* || "${{ matrix.matlab }}" = "R2021"* || "${{ matrix.matlab }}" = "R2022"* || "${{ matrix.matlab }}" = "R2023"* ]] ; then
ONEAPI_VERSION=2023
fi
fi
echo "ONEAPI_VERSION=$ONEAPI_VERSION" >> $GITHUB_ENV
echo "ONEAPI_VERSION:" $ONEAPI_VERSION
- name: Install Intel oneAPI on macOS
if: startsWith(matrix.os, 'macos')
run: bash .github/scripts/install_oneapi_macos.sh $ONEAPI_VERSION

- name: Install Intel oneAPI on Windows
if: startsWith(matrix.os, 'windows')
run: cmd.exe "/K" '".github\scripts\install_oneapi_windows.bat %ONEAPI_VERSION%"'

- name: Set up MATLAB
uses: matlab-actions/setup-matlab@v2.1.2
with:
release: ${{ matrix.matlab }}
cache: true
products: Parallel_Computing_Toolbox

- name: Conduct the test
uses: matlab-actions/run-command@v2.1.1
with:
command: |
cd matlab/tests; testprima_ex();
53 changes: 53 additions & 0 deletions .github/workflows/test_matlab_linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,56 @@ jobs:
$SEDI "s/max(\[0, chist\]) > 0)/max(\[0, chist\]) > 0)\nprobinfo.raw_data\noutput\nchist/" postprima.m
cat postprima.m
- name: Decide gfortran version for MATLAB on Linux
if: startsWith(matrix.os, 'ubuntu')
run: |
GFVER=${{ env.GFORTRAN_VERSION }}
if [[ "${{ matrix.os }}" = "ubuntu-20.04" ]] ; then
GFVER=11
fi
if [[ "${{ matrix.matlab }}" = "R2020b" || "${{ matrix.matlab }}" = "R2021a" || "${{ matrix.matlab }}" = "R2021b" ]] ; then
GFVER=9
fi
echo "GFVER=$GFVER" >> $GITHUB_ENV
- name: Set up gfortran on Linux
if: startsWith(matrix.os, 'ubuntu')
uses: fortran-lang/setup-fortran@main
with:
compiler: gcc
version: ${{ env.GFVER }}
- name: Check gfortran version on Linux
if: startsWith(matrix.os, 'ubuntu')
run: which gfortran && gfortran --version

- name: Decide the version of oneAPI to use
shell: bash
run: |
ONEAPI_VERSION=
if [[ "${{ matrix.os }}" = "windows-"* ]] ; then
if [[ "${{ matrix.matlab }}" = "R2020"* || "${{ matrix.matlab }}" = "R2021"* || "${{ matrix.matlab }}" = "R2022"* || "${{ matrix.matlab }}" = "R2023"* ]] ; then
ONEAPI_VERSION=2023
fi
fi
echo "ONEAPI_VERSION=$ONEAPI_VERSION" >> $GITHUB_ENV
echo "ONEAPI_VERSION:" $ONEAPI_VERSION
- name: Install Intel oneAPI on macOS
if: startsWith(matrix.os, 'macos')
run: bash .github/scripts/install_oneapi_macos.sh $ONEAPI_VERSION

- name: Install Intel oneAPI on Windows
if: startsWith(matrix.os, 'windows')
run: cmd.exe "/K" '".github\scripts\install_oneapi_windows.bat %ONEAPI_VERSION%"'

- name: Set up MATLAB
uses: matlab-actions/setup-matlab@v2.1.2
with:
release: ${{ matrix.matlab }}
cache: true
products: Parallel_Computing_Toolbox

- name: Conduct the test
uses: matlab-actions/run-command@v2.1.1
with:
command: |
cd matlab/tests; testprima_ex();
32 changes: 32 additions & 0 deletions .github/workflows/test_matlab_mac_intel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,35 @@ jobs:
$SEDI "s/max(\[0, chist\]) > 0)/max(\[0, chist\]) > 0)\nprobinfo.raw_data\noutput\nchist/" postprima.m
cat postprima.m
- name: Decide the version of oneAPI to use
shell: bash
run: |
ONEAPI_VERSION=
if [[ "${{ matrix.os }}" = "windows-"* ]] ; then
if [[ "${{ matrix.matlab }}" = "R2020"* || "${{ matrix.matlab }}" = "R2021"* || "${{ matrix.matlab }}" = "R2022"* || "${{ matrix.matlab }}" = "R2023"* ]] ; then
ONEAPI_VERSION=2023
fi
fi
echo "ONEAPI_VERSION=$ONEAPI_VERSION" >> $GITHUB_ENV
echo "ONEAPI_VERSION:" $ONEAPI_VERSION
- name: Install Intel oneAPI on macOS
if: startsWith(matrix.os, 'macos')
run: bash .github/scripts/install_oneapi_macos.sh $ONEAPI_VERSION

- name: Install Intel oneAPI on Windows
if: startsWith(matrix.os, 'windows')
run: cmd.exe "/K" '".github\scripts\install_oneapi_windows.bat %ONEAPI_VERSION%"'

- name: Set up MATLAB
uses: matlab-actions/setup-matlab@v2.1.2
with:
release: ${{ matrix.matlab }}
cache: true
products: Parallel_Computing_Toolbox

- name: Conduct the test
uses: matlab-actions/run-command@v2.1.1
with:
command: |
cd matlab/tests; testprima_ex();
32 changes: 32 additions & 0 deletions .github/workflows/test_matlab_windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,35 @@ jobs:
$SEDI "s/max(\[0, chist\]) > 0)/max(\[0, chist\]) > 0)\nprobinfo.raw_data\noutput\nchist/" postprima.m
cat postprima.m
- name: Decide the version of oneAPI to use
shell: bash
run: |
ONEAPI_VERSION=
if [[ "${{ matrix.os }}" = "windows-"* ]] ; then
if [[ "${{ matrix.matlab }}" = "R2020"* || "${{ matrix.matlab }}" = "R2021"* || "${{ matrix.matlab }}" = "R2022"* || "${{ matrix.matlab }}" = "R2023"* ]] ; then
ONEAPI_VERSION=2023
fi
fi
echo "ONEAPI_VERSION=$ONEAPI_VERSION" >> $GITHUB_ENV
echo "ONEAPI_VERSION:" $ONEAPI_VERSION
- name: Install Intel oneAPI on macOS
if: startsWith(matrix.os, 'macos')
run: bash .github/scripts/install_oneapi_macos.sh $ONEAPI_VERSION

- name: Install Intel oneAPI on Windows
if: startsWith(matrix.os, 'windows')
run: cmd.exe "/K" '".github\scripts\install_oneapi_windows.bat %ONEAPI_VERSION%"'

- name: Set up MATLAB
uses: matlab-actions/setup-matlab@v2.1.2
with:
release: ${{ matrix.matlab }}
cache: true
products: Parallel_Computing_Toolbox

- name: Conduct the test
uses: matlab-actions/run-command@v2.1.1
with:
command: |
cd matlab/tests; testprima_ex();

0 comments on commit ef6c287

Please sign in to comment.