Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pin dune and base to work around ocaml trunk changes #472

Merged
merged 6 commits into from
Jun 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 12 additions & 16 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
export OPAM_DISABLE_SANDBOXING=true
TAG='"run_in_ci"' make run_config_filtered.json
sed -i 's/--cpu-list 5/--cpu-list 1/g' run_config_filtered.json
OPT_WAIT=0 USE_SYS_DUNE_HACK=1 RUN_CONFIG_JSON=run_config_filtered.json make ocaml-versions/5.3.0+trunk.bench
OPT_WAIT=0 USE_SYS_DUNE_HACK=0 RUN_CONFIG_JSON=run_config_filtered.json make ocaml-versions/5.3.0+trunk.bench
ls _results
cat _results/*
make json
Expand All @@ -61,7 +61,7 @@ jobs:
sed -i 's/--cpu-list 5/--cpu-list 1/g' multicore_parallel_run_config_filtered.json
sed -i 's/--cpu-list 5/--cpu-list 1/g' multicore_parallel_run_config_filtered_filtered.json
make multicore_parallel_run_config_filtered_filtered_2domains.json
OPT_WAIT=0 USE_SYS_DUNE_HACK=1 BUILD_BENCH_TARGET=multibench_parallel RUN_CONFIG_JSON=multicore_parallel_run_config_filtered_filtered_2domains.json make ocaml-versions/5.3.0+trunk.bench
OPT_WAIT=0 USE_SYS_DUNE_HACK=0 BUILD_BENCH_TARGET=multibench_parallel RUN_CONFIG_JSON=multicore_parallel_run_config_filtered_filtered_2domains.json make ocaml-versions/5.3.0+trunk.bench
ls _results
cat _results/*
make json
Expand Down Expand Up @@ -95,19 +95,19 @@ jobs:
sudo apt-get update && make install-depends

# Runs a set of commands using the runners shell
- name: 5.2.0+trunk+serial
- name: 5.2.1+trunk+serial
run: |
eval $(opam env)
export ITER=1
export OPAM_DISABLE_SANDBOXING=true
TAG='"run_in_ci"' make run_config_filtered.json
sed -i 's/--cpu-list 5/--cpu-list 1/g' run_config_filtered.json
OPT_WAIT=0 USE_SYS_DUNE_HACK=1 RUN_CONFIG_JSON=run_config_filtered.json make ocaml-versions/5.2.0+trunk.bench
OPT_WAIT=0 USE_SYS_DUNE_HACK=0 RUN_CONFIG_JSON=run_config_filtered.json make ocaml-versions/5.2.1+trunk.bench
ls _results
cat _results/*
make json

- name: 5.2.0+trunk+parallel
- name: 5.2.1+trunk+parallel
run: |
eval $(opam env)
export ITER=1
Expand All @@ -117,7 +117,7 @@ jobs:
sed -i 's/--cpu-list 5/--cpu-list 1/g' multicore_parallel_run_config_filtered.json
sed -i 's/--cpu-list 5/--cpu-list 1/g' multicore_parallel_run_config_filtered_filtered.json
make multicore_parallel_run_config_filtered_filtered_2domains.json
OPT_WAIT=0 USE_SYS_DUNE_HACK=1 BUILD_BENCH_TARGET=multibench_parallel RUN_CONFIG_JSON=multicore_parallel_run_config_filtered_filtered_2domains.json make ocaml-versions/5.2.0+trunk.bench
OPT_WAIT=0 USE_SYS_DUNE_HACK=0 BUILD_BENCH_TARGET=multibench_parallel RUN_CONFIG_JSON=multicore_parallel_run_config_filtered_filtered_2domains.json make ocaml-versions/5.2.1+trunk.bench
ls _results
cat _results/*
make json
Expand Down Expand Up @@ -154,7 +154,7 @@ jobs:
export OPAM_DISABLE_SANDBOXING=true
TAG='"run_in_ci"' make run_config_filtered.json
sed -i 's/--cpu-list 5/--cpu-list 1/g' run_config_filtered.json
OPT_WAIT=0 USE_SYS_DUNE_HACK=1 RUN_CONFIG_JSON=run_config_filtered.json make ocaml-versions/4.14.0.bench
OPT_WAIT=0 USE_SYS_DUNE_HACK=0 RUN_CONFIG_JSON=run_config_filtered.json make ocaml-versions/4.14.0.bench
ls _results
cat _results/*

Expand All @@ -168,7 +168,7 @@ jobs:
sed -i 's/--cpu-list 5/--cpu-list 1/g' multicore_parallel_run_config_filtered.json
sed -i 's/--cpu-list 5/--cpu-list 1/g' multicore_parallel_run_config_filtered_filtered.json
make multicore_parallel_run_config_filtered_filtered_2domains.json
OPT_WAIT=0 USE_SYS_DUNE_HACK=1 BUILD_BENCH_TARGET=multibench_parallel RUN_CONFIG_JSON=multicore_parallel_run_config_filtered_filtered_2domains.json make ocaml-versions/4.14.0.bench || echo "Expected failure: Can't run parallel tests on 4.14.0"
OPT_WAIT=0 USE_SYS_DUNE_HACK=0 BUILD_BENCH_TARGET=multibench_parallel RUN_CONFIG_JSON=multicore_parallel_run_config_filtered_filtered_2domains.json make ocaml-versions/4.14.0.bench || echo "Expected failure: Can't run parallel tests on 4.14.0"

test-notebooks:
strategy:
Expand All @@ -185,12 +185,8 @@ jobs:
- name: test_notebooks
run: |
sudo apt-get update && make install-depends
python3 -m pip install markupsafe==2.0.1
export PATH=$PATH:/home/opam/.local/bin
pip3 install jupyter nbconvert seaborn==0.11.2 pandas==1.5.3 numpy==1.23.5
cd notebooks/sequential
sudo chmod 777 .
jupyter nbconvert --to html --execute sequential.ipynb
cd ../parallel
sudo chmod 777 .
jupyter nbconvert --to html --execute parallel.ipynb
cd notebooks/
pip3 install -r requirements.txt
jupyter nbconvert --to html --execute sequential/sequential.ipynb
jupyter nbconvert --to html --execute parallel/parallel.ipynb
25 changes: 24 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ BUILD_BENCH_TARGET ?= buildbench
RUN_CONFIG_JSON ?= run_config.json

# Default dune version to be used
SANDMARK_DUNE_VERSION ?= 3.5.0
SANDMARK_DUNE_VERSION ?= 3.15.3

# Default URL
SANDMARK_URL ?= ""
Expand Down Expand Up @@ -111,6 +111,21 @@ ifeq (1, $(USE_SYS_DUNE_HACK))
opam install --switch=$(CONFIG_SWITCH_NAME) --yes "dune.$(SANDMARK_DUNE_VERSION)" "dune-configurator.$(SANDMARK_DUNE_VERSION)"
# Pin the version so it doesn't change when installing packages
opam pin add --switch=$(CONFIG_SWITCH_NAME) --yes -n dune "$(SANDMARK_DUNE_VERSION)"
else
@{ case "$*" in \
5.3.*) \
opam repo add upstream "git+https://github.com/ocaml/opam-repository.git" --on-switch=$(CONFIG_SWITCH_NAME) --rank 2; \
opam install --switch=$(CONFIG_SWITCH_NAME) --yes ocamlfind; \
echo "Pinning dune to fixed version to work around binary and native compiler options split"; \
opam pin add --yes -n --switch=$(CONFIG_SWITCH_NAME) dune."$(SANDMARK_DUNE_VERSION)" https://github.com/ocaml-bench/dune.git#fix-compiler-opts; \
opam pin add --yes -n --switch=$(CONFIG_SWITCH_NAME) dune-configurator."$(SANDMARK_DUNE_VERSION)" https://github.com/ocaml-bench/dune.git#fix-compiler-opts; \
opam reinstall --switch=$(CONFIG_SWITCH_NAME) --yes dune dune-configurator ;; \
*) \
opam repo add upstream "git+https://github.com/ocaml/opam-repository.git" --on-switch=$(CONFIG_SWITCH_NAME) --rank 2; \
opam install --switch=$(CONFIG_SWITCH_NAME) --yes ocamlfind; \
opam install --switch=$(CONFIG_SWITCH_NAME) --yes "dune.$(SANDMARK_DUNE_VERSION)" "dune-configurator.$(SANDMARK_DUNE_VERSION)"; \
opam pin add --switch=$(CONFIG_SWITCH_NAME) --yes -n dune "$(SANDMARK_DUNE_VERSION)";; \
esac };
endif

ocamls=$(wildcard ocaml-versions/*.json)
Expand Down Expand Up @@ -157,6 +172,14 @@ endif
opam pin add -n --yes --switch $* ocamlfind https://github.com/dra27/ocamlfind/archive/lib-layout.tar.gz
opam pin add -n --yes --switch $* coq-core https://github.com/ejgallego/coq/archive/refs/tags/multicore-2021-09-29.tar.gz
opam pin add -n --yes --switch $* coq-stdlib https://github.com/ejgallego/coq/archive/refs/tags/multicore-2021-09-29.tar.gz
# TODO remove when a new version of base is released on opam
# See https://github.com/ocaml-bench/sandmark/issues/470
@{ case "$*" in \
5.3.*) \
echo "Pinning base to fixed commit for Format_doc change"; \
opam pin add -n --yes --switch $* base.v0.17.0 https://github.com/ocaml-bench/base.git#fix-compat-format-doc;; \
*) echo "Nothing to do here" ;; \
esac };

override_packages/%: setup_sys_dune/%
$(eval CONFIG_SWITCH_NAME = $*)
Expand Down
111 changes: 111 additions & 0 deletions notebooks/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
anyio==4.4.0
argon2-cffi==23.1.0
argon2-cffi-bindings==21.2.0
arrow==1.3.0
asttokens==2.4.1
async-lru==2.0.4
attrs==23.2.0
Babel==2.15.0
beautifulsoup4==4.12.3
bleach==6.1.0
certifi==2024.6.2
cffi==1.16.0
charset-normalizer==3.3.2
comm==0.2.2
contourpy==1.2.1
cycler==0.12.1
debugpy==1.8.1
decorator==5.1.1
defusedxml==0.7.1
exceptiongroup==1.2.1
executing==2.0.1
fastjsonschema==2.19.1
fonttools==4.53.0
fqdn==1.5.1
h11==0.14.0
httpcore==1.0.5
httpx==0.27.0
idna==3.7
ipykernel==6.29.4
ipython==8.25.0
ipywidgets==8.1.3
isoduration==20.11.0
jedi==0.19.1
Jinja2==3.1.4
json5==0.9.25
jsonpointer==2.4
jsonschema==4.22.0
jsonschema-specifications==2023.12.1
jupyter==1.0.0
jupyter-console==6.6.3
jupyter-events==0.10.0
jupyter-lsp==2.2.5
jupyter_client==8.6.2
jupyter_core==5.7.2
jupyter_server==2.14.1
jupyter_server_terminals==0.5.3
jupyterlab==4.2.1
jupyterlab_pygments==0.3.0
jupyterlab_server==2.27.2
jupyterlab_widgets==3.0.11
kiwisolver==1.4.5
MarkupSafe==2.0.1
matplotlib==3.7.1
matplotlib-inline==0.1.7
mistune==3.0.2
nbclient==0.10.0
nbconvert==7.16.4
nbformat==5.10.4
nest-asyncio==1.6.0
notebook==7.2.0
notebook_shim==0.2.4
numpy==1.23.5
overrides==7.7.0
packaging==24.0
pandas==1.5.3
pandocfilters==1.5.1
parso==0.8.4
pexpect==4.9.0
pillow==10.3.0
platformdirs==4.2.2
prometheus_client==0.20.0
prompt_toolkit==3.0.45
psutil==5.9.8
ptyprocess==0.7.0
pure-eval==0.2.2
pycparser==2.22
Pygments==2.18.0
pyparsing==3.1.2
python-dateutil==2.9.0.post0
python-json-logger==2.0.7
pytz==2024.1
PyYAML==6.0.1
pyzmq==26.0.3
qtconsole==5.5.2
QtPy==2.4.1
referencing==0.35.1
requests==2.32.3
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rpds-py==0.18.1
scipy==1.13.1
seaborn==0.11.2
Send2Trash==1.8.3
six==1.16.0
sniffio==1.3.1
soupsieve==2.5
stack-data==0.6.3
terminado==0.18.1
tinycss2==1.3.0
tomli==2.0.1
tornado==6.4
traitlets==5.14.3
types-python-dateutil==2.9.0.20240316
typing_extensions==4.12.1
uri-template==1.3.0
urllib3==2.2.1
wcwidth==0.2.13
webcolors==1.13
webencodings==0.5.1
websocket-client==1.8.0
widgetsnbextension==4.0.11
File renamed without changes.
2 changes: 1 addition & 1 deletion run_all_custom.sh
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ for i in $(seq 0 $((${COUNT} - 1))); do
TAG=`echo "${TAG_STRING}"` make `echo ${CONFIG_RUN_JSON}`

# Build and execute benchmarks
USE_SYS_DUNE_HACK=1 SANDMARK_URL="`echo ${CONFIG_URL}`" \
USE_SYS_DUNE_HACK=0 SANDMARK_URL="`echo ${CONFIG_URL}`" \
RUN_CONFIG_JSON="`echo ${CONFIG_RUN_JSON}`" \
ENVIRONMENT="`echo ${CONFIG_ENVIRONMENT}`" \
OCAML_CONFIG_OPTION="`echo ${CONFIG_OPTIONS}`" \
Expand Down
2 changes: 1 addition & 1 deletion run_all_parallel.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

TAG='"macro_bench"' make multicore_parallel_run_config_filtered.json

USE_SYS_DUNE_HACK=1 \
USE_SYS_DUNE_HACK=0 \
RUN_BENCH_TARGET=run_orunchrt \
BUILD_BENCH_TARGET=multibench_parallel \
RUN_CONFIG_JSON=multicore_parallel_run_config_filtered.json \
Expand Down
2 changes: 1 addition & 1 deletion run_all_serial.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

TAG='"macro_bench"' make run_config_filtered.json

OPT_WAIT=0 USE_SYS_DUNE_HACK=1 \
OPT_WAIT=0 USE_SYS_DUNE_HACK=0 \
SANDMARK_CUSTOM_NAME=5.1.0+trunk \
RUN_CONFIG_JSON=run_config_filtered.json \
make ocaml-versions/5.1.0+trunk.bench
Loading