forked from blockwise-direct-search/bds
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
28 changed files
with
4,204 additions
and
33 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,195 @@ | ||
name: Profile original cbds and bfgs using optiprofiler, big | ||
|
||
on: | ||
# Trigger the workflow on # push or pull request | ||
push: | ||
# Trigger the workflow manually | ||
schedule: | ||
- cron: '0 0 */2 * *' | ||
workflow_dispatch: | ||
|
||
jobs: | ||
test: | ||
name: Profile original CBDS and bfgs, big | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ubuntu-latest] | ||
matlab: [latest] | ||
dim: [big] | ||
with_optim_toolbox: [yes] | ||
solver: [cbds-orig] | ||
competitor: [fminunc] | ||
run_plain: [false] | ||
summarize_log_ratio_profiles: [false] | ||
feature: [plain, perturbed_x0_0.001, perturbed_x0_1, perturbed_x0_10, perturbed_x0_100, noisy_1e-1, noisy_1e-2, noisy_1e-3, noisy_1e-4, truncated_1, truncated_2, truncated_3, truncated_4, permuted, linearly_transformed, random_nan_5, random_nan_10, random_nan_20, quantized_1, quantized_2, quantized_3, quantized_4, rotation_noisy_1e-1, rotation_noisy_1e-2, rotation_noisy_1e-3, rotation_noisy_1e-4] | ||
|
||
steps: | ||
- name: Check out repository | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Checkout OptiProfiler | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: optiprofiler/optiprofiler | ||
ref: matlab | ||
path: optiprofiler | ||
|
||
- name: Install Texlive | ||
run: sudo apt-get update && sudo apt-get install texlive | ||
|
||
- name: Check whether LaTeX is installed | ||
run: pdflatex --version | ||
|
||
- name: Cache MATLAB | ||
id: cache-matlab | ||
uses: actions/cache@v4.0.1 | ||
with: | ||
path: ${{ runner.tool_cache }}/MATLAB | ||
key: ${{ matrix.os }}-${{ matrix.matlab }}-${{ matrix.with_optim_toolbox }} | ||
|
||
- name: Set up MATLAB with optimization toolbox | ||
if: ${{ matrix.with_optim_toolbox == 'yes' }} | ||
uses: matlab-actions/setup-matlab@v2.1.2 | ||
with: | ||
release: ${{ matrix.matlab }} | ||
products: Optimization_Toolbox | ||
|
||
- name: Run test | ||
uses: matlab-actions/run-command@v2.1.1 | ||
with: | ||
command: | | ||
root_dir = pwd() | ||
ls | ||
% Setup optiprofiler | ||
cd(fullfile(root_dir, 'optiprofiler')); | ||
setup | ||
cd(root_dir); | ||
|
||
% Setup bds | ||
setup | ||
cd(fullfile(root_dir, 'tests', 'competitors')); | ||
addpath(pwd); | ||
|
||
% profile | ||
cd(fullfile(root_dir, 'tests')); | ||
options = struct(); | ||
options.feature_name = '${{ matrix.feature }}'; | ||
options.solver_names = {'${{ matrix.solver }}', '${{ matrix.competitor }}'}; | ||
options.dim = '${{ matrix.dim }}'; | ||
options.run_plain = ${{ matrix.run_plain }}; | ||
options.summarize_log_ratio_profiles = ${{ matrix.summarize_log_ratio_profiles }}; | ||
profile_optiprofiler(options); | ||
cd(root_dir); | ||
cd(fullfile(root_dir, 'tests', 'out')); | ||
ls -R | ||
cd(root_dir); | ||
|
||
- name: Change the summary file name | ||
run: | | ||
cd ./tests/out | ||
ls -R | ||
find . -type f -name 'summary.pdf' | while read -r file; do | ||
# Obtain the parent directory and name | ||
parent_dir=$(dirname "$file") | ||
parent_name=$(basename "$parent_dir") | ||
# Obtain the new name(Why the fifth underline? Because the last five parts are the time stamp) | ||
new_name=$(echo "$parent_name" | awk -F'_' '{if(NF>=5) {for(i=1;i<=NF-5;i++) printf "%s%s", $i, (i<NF-5?"_":"")} else print $0}') | ||
# Print the new name | ||
echo "New name: $new_name" | ||
# Obtain the directory name | ||
dir_name=$(dirname "$file") | ||
# Establish the new file name | ||
new_file="$dir_name/summary_$new_name.pdf" | ||
# Check if the source and destination are the same | ||
if [ "$file" != "$new_file" ]; then | ||
mv "$file" "$new_file" | ||
echo "Renamed $file to $new_file" | ||
else | ||
echo "Source and destination are the same, skipping: $file" | ||
fi | ||
done | ||
- name: Upload artifact | ||
uses: actions/upload-artifact@v3.1.2 | ||
with: | ||
name: profile_optiprofiler_${{ matrix.solver }}_${{ matrix.competitor }}_${{ matrix.dim }}_${{ matrix.feature }}_${{ matrix.run_plain }} | ||
path: ./tests/out/** | ||
|
||
merge_artifacts: | ||
name: Merge Artifacts | ||
runs-on: ubuntu-latest | ||
needs: test | ||
permissions: | ||
actions: read | ||
contents: read | ||
|
||
steps: | ||
- name: Check out repository | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Install PDF tools | ||
run: sudo apt-get update && sudo apt-get install -y poppler-utils | ||
|
||
- name: Download artifacts | ||
uses: actions/download-artifact@v3 | ||
with: | ||
path: tests/testdata/downloaded_artifacts | ||
|
||
- name: List all files | ||
run: | | ||
cd tests/testdata/downloaded_artifacts | ||
ls -R | ||
- name: Merge PDF files | ||
run: | | ||
cp tests/tools/merge_pdf.sh tests/testdata/downloaded_artifacts | ||
cd tests/testdata/downloaded_artifacts/ | ||
ARTIFACT_NAME=$(ls | grep "profile_optiprofiler" | head -n 1) | ||
BASE_INFO=$(echo $ARTIFACT_NAME | sed -n 's/.*optiprofiler_\([^_]*_[^_]*_\(small\|big\)\).*/\1/p') | ||
echo "Base info extracted: ${BASE_INFO}" | ||
echo "BASE_INFO=${BASE_INFO}" >> $GITHUB_ENV | ||
# Merge PDF files | ||
mkdir summary | ||
for f in $(find . -maxdepth 3 -type f -name 'summary*.pdf'); do | ||
if [ ! -f "summary/$(basename $f)" ]; then | ||
cp "$f" summary/ | ||
fi | ||
done | ||
cd summary | ||
ls | ||
bash ../merge_pdf.sh | ||
mv merged.pdf "summary_${BASE_INFO}.pdf" | ||
cd .. | ||
if [ -d "summary" ]; then | ||
mv summary "summary_${BASE_INFO}" | ||
fi | ||
- name: Upload merged artifact | ||
uses: actions/upload-artifact@v3 | ||
env: | ||
BASE_INFO: ${{ env.BASE_INFO }} | ||
with: | ||
name: merged_profiles_${{ env.BASE_INFO }} | ||
path: tests/testdata/downloaded_artifacts/** | ||
|
||
- name: Upload summary files | ||
uses: actions/upload-artifact@v3 | ||
env: | ||
BASE_INFO: ${{ env.BASE_INFO }} | ||
with: | ||
name: summary_files_${{ env.BASE_INFO }} | ||
path: tests/testdata/downloaded_artifacts/summary_${{ env.BASE_INFO }}/** |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,195 @@ | ||
name: Profile original cbds and bfgs using optiprofiler, small | ||
|
||
on: | ||
# Trigger the workflow on # push or pull request | ||
push: | ||
# Trigger the workflow manually | ||
schedule: | ||
- cron: '0 6 */2 * *' | ||
workflow_dispatch: | ||
|
||
jobs: | ||
test: | ||
name: Profile original CBDS and bfgs, small | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ubuntu-latest] | ||
matlab: [latest] | ||
dim: [small] | ||
with_optim_toolbox: [yes] | ||
solver: [cbds-orig] | ||
competitor: [fminunc] | ||
run_plain: [false] | ||
summarize_log_ratio_profiles: [false] | ||
feature: [plain, perturbed_x0_0.001, perturbed_x0_1, perturbed_x0_10, perturbed_x0_100, noisy_1e-1, noisy_1e-2, noisy_1e-3, noisy_1e-4, truncated_1, truncated_2, truncated_3, truncated_4, permuted, linearly_transformed, random_nan_5, random_nan_10, random_nan_20, quantized_1, quantized_2, quantized_3, quantized_4, rotation_noisy_1e-1, rotation_noisy_1e-2, rotation_noisy_1e-3, rotation_noisy_1e-4] | ||
|
||
steps: | ||
- name: Check out repository | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Checkout OptiProfiler | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: optiprofiler/optiprofiler | ||
ref: matlab | ||
path: optiprofiler | ||
|
||
- name: Install Texlive | ||
run: sudo apt-get update && sudo apt-get install texlive | ||
|
||
- name: Check whether LaTeX is installed | ||
run: pdflatex --version | ||
|
||
- name: Cache MATLAB | ||
id: cache-matlab | ||
uses: actions/cache@v4.0.1 | ||
with: | ||
path: ${{ runner.tool_cache }}/MATLAB | ||
key: ${{ matrix.os }}-${{ matrix.matlab }}-${{ matrix.with_optim_toolbox }} | ||
|
||
- name: Set up MATLAB with optimization toolbox | ||
if: ${{ matrix.with_optim_toolbox == 'yes' }} | ||
uses: matlab-actions/setup-matlab@v2.1.2 | ||
with: | ||
release: ${{ matrix.matlab }} | ||
products: Optimization_Toolbox | ||
|
||
- name: Run test | ||
uses: matlab-actions/run-command@v2.1.1 | ||
with: | ||
command: | | ||
root_dir = pwd() | ||
ls | ||
% Setup optiprofiler | ||
cd(fullfile(root_dir, 'optiprofiler')); | ||
setup | ||
cd(root_dir); | ||
|
||
% Setup bds | ||
setup | ||
cd(fullfile(root_dir, 'tests', 'competitors')); | ||
addpath(pwd); | ||
|
||
% profile | ||
cd(fullfile(root_dir, 'tests')); | ||
options = struct(); | ||
options.feature_name = '${{ matrix.feature }}'; | ||
options.solver_names = {'${{ matrix.solver }}', '${{ matrix.competitor }}'}; | ||
options.dim = '${{ matrix.dim }}'; | ||
options.run_plain = ${{ matrix.run_plain }}; | ||
options.summarize_log_ratio_profiles = ${{ matrix.summarize_log_ratio_profiles }}; | ||
profile_optiprofiler(options); | ||
cd(root_dir); | ||
cd(fullfile(root_dir, 'tests', 'out')); | ||
ls -R | ||
cd(root_dir); | ||
|
||
- name: Change the summary file name | ||
run: | | ||
cd ./tests/out | ||
ls -R | ||
find . -type f -name 'summary.pdf' | while read -r file; do | ||
# Obtain the parent directory and name | ||
parent_dir=$(dirname "$file") | ||
parent_name=$(basename "$parent_dir") | ||
# Obtain the new name(Why the fifth underline? Because the last five parts are the time stamp) | ||
new_name=$(echo "$parent_name" | awk -F'_' '{if(NF>=5) {for(i=1;i<=NF-5;i++) printf "%s%s", $i, (i<NF-5?"_":"")} else print $0}') | ||
# Print the new name | ||
echo "New name: $new_name" | ||
# Obtain the directory name | ||
dir_name=$(dirname "$file") | ||
# Establish the new file name | ||
new_file="$dir_name/summary_$new_name.pdf" | ||
# Check if the source and destination are the same | ||
if [ "$file" != "$new_file" ]; then | ||
mv "$file" "$new_file" | ||
echo "Renamed $file to $new_file" | ||
else | ||
echo "Source and destination are the same, skipping: $file" | ||
fi | ||
done | ||
- name: Upload artifact | ||
uses: actions/upload-artifact@v3.1.2 | ||
with: | ||
name: profile_optiprofiler_${{ matrix.solver }}_${{ matrix.competitor }}_${{ matrix.dim }}_${{ matrix.feature }}_${{ matrix.run_plain }} | ||
path: ./tests/out/** | ||
|
||
merge_artifacts: | ||
name: Merge Artifacts | ||
runs-on: ubuntu-latest | ||
needs: test | ||
permissions: | ||
actions: read | ||
contents: read | ||
|
||
steps: | ||
- name: Check out repository | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Install PDF tools | ||
run: sudo apt-get update && sudo apt-get install -y poppler-utils | ||
|
||
- name: Download artifacts | ||
uses: actions/download-artifact@v3 | ||
with: | ||
path: tests/testdata/downloaded_artifacts | ||
|
||
- name: List all files | ||
run: | | ||
cd tests/testdata/downloaded_artifacts | ||
ls -R | ||
- name: Merge PDF files | ||
run: | | ||
cp tests/tools/merge_pdf.sh tests/testdata/downloaded_artifacts | ||
cd tests/testdata/downloaded_artifacts/ | ||
ARTIFACT_NAME=$(ls | grep "profile_optiprofiler" | head -n 1) | ||
BASE_INFO=$(echo $ARTIFACT_NAME | sed -n 's/.*optiprofiler_\([^_]*_[^_]*_\(small\|big\)\).*/\1/p') | ||
echo "Base info extracted: ${BASE_INFO}" | ||
echo "BASE_INFO=${BASE_INFO}" >> $GITHUB_ENV | ||
# Merge PDF files | ||
mkdir summary | ||
for f in $(find . -maxdepth 3 -type f -name 'summary*.pdf'); do | ||
if [ ! -f "summary/$(basename $f)" ]; then | ||
cp "$f" summary/ | ||
fi | ||
done | ||
cd summary | ||
ls | ||
bash ../merge_pdf.sh | ||
mv merged.pdf "summary_${BASE_INFO}.pdf" | ||
cd .. | ||
if [ -d "summary" ]; then | ||
mv summary "summary_${BASE_INFO}" | ||
fi | ||
- name: Upload merged artifact | ||
uses: actions/upload-artifact@v3 | ||
env: | ||
BASE_INFO: ${{ env.BASE_INFO }} | ||
with: | ||
name: merged_profiles_${{ env.BASE_INFO }} | ||
path: tests/testdata/downloaded_artifacts/** | ||
|
||
- name: Upload summary files | ||
uses: actions/upload-artifact@v3 | ||
env: | ||
BASE_INFO: ${{ env.BASE_INFO }} | ||
with: | ||
name: summary_files_${{ env.BASE_INFO }} | ||
path: tests/testdata/downloaded_artifacts/summary_${{ env.BASE_INFO }}/** |
Oops, something went wrong.