diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d60a2fd50..df494a6f9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -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 @@ -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 @@ -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 @@ -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 @@ -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/* @@ -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: @@ -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 diff --git a/Makefile b/Makefile index f088cf74b..cbe629482 100644 --- a/Makefile +++ b/Makefile @@ -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 ?= "" @@ -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) @@ -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 = $*) diff --git a/notebooks/requirements.txt b/notebooks/requirements.txt new file mode 100644 index 000000000..736d1a91c --- /dev/null +++ b/notebooks/requirements.txt @@ -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 diff --git a/ocaml-versions/5.2.0+trunk.json b/ocaml-versions/5.2.1+trunk.json similarity index 100% rename from ocaml-versions/5.2.0+trunk.json rename to ocaml-versions/5.2.1+trunk.json diff --git a/run_all_custom.sh b/run_all_custom.sh index bc17b643e..4f8048524 100644 --- a/run_all_custom.sh +++ b/run_all_custom.sh @@ -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}`" \ diff --git a/run_all_parallel.sh b/run_all_parallel.sh index 13477c24a..ba5f6beb8 100644 --- a/run_all_parallel.sh +++ b/run_all_parallel.sh @@ -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 \ diff --git a/run_all_serial.sh b/run_all_serial.sh index eed9e56bd..93e791580 100644 --- a/run_all_serial.sh +++ b/run_all_serial.sh @@ -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