11CURDIR ?= $(shell pwd)
22
3- IMAGE_full := full:latest
4- IMAGE_quick := quick:latest
3+ IMAGE := $(if $(FULL ) ,full:latest,quick:latest)
54LOG_STAGE := log_export
65RUNTIME_STAGE := runtime
76RESULTS := $(CURDIR ) /results
87LOGFILE := experiment.log
98
109VENV_DIR := .venv
1110VENV_PYTHON := $(VENV_DIR ) /bin/python
12- PYTHON := $(VENV_PYTHON ) # Use venv python consistently
11+ PYTHON := $(VENV_PYTHON )
1312INVOKE := $(VENV_DIR ) /bin/invoke
1413
1514BIN_DIR ?= $(CURDIR ) /artefacts/bin
1615BIN_ARCHIVE ?= artefacts-bin.tar.xz
17- PREBUILT_DIR := $(CURDIR ) /artefacts/prebuilt
18- PREBUILT_BIN := $(PREBUILT_DIR ) /bin # Added definition
1916
20- GDRIVE_FILE_ID = 1oDkZ2RH65iq25_65AppzdLH_zzbt6oRz
21- GDRIVE_ARTEFACT = $(PREBUILT_DIR ) /$(BIN_ARCHIVE )
17+ EXP_ARG := $(if $(strip $(EXPERIMENTS ) ) ,--experiments "$(EXPERIMENTS ) ")
18+ SUITE_ARG := $(if $(strip $(SUITES ) ) ,--suites $(SUITES ) )
19+ MEASURE_ARG := $(if $(strip $(MEASUREMENTS ) ) ,--measurements $(MEASUREMENTS ) )
20+
21+ QUICK_PEXECS = 5
22+ FULL_PEXECS = 30
2223
2324.PHONY : run-full run-quick fetch-binaries bare-metal
2425
@@ -29,51 +30,50 @@ $(VENV_DIR):
2930
3031venv : pyproject.toml | $(VENV_DIR )
3132
32- run-quick : fetch-binaries
33- docker buildx build \
33+
34+ define WITH_DOCKER
35+ docker buildx build --progress=plain \
36+ --build-arg FULL=$1 \
37+ $(if $(EXP_ARG ) ,--build-arg EXPERIMENTS=$(EXP_ARG ) ) \
38+ $(if $(SUITE_ARG ) ,--build-arg SUITES=$(SUITE_ARG ) ) \
39+ $(if $(MEASURE_ARG ) ,--build-arg MEASUREMENTS=$(MEASURE_ARG ) ) \
3440 --target runtime \
35- --tag $(IMAGE_quick ) \
36- --build-arg BUILD_QUICK=true \
41+ --tag $(IMAGE ) \
3742 --load .
3843 @test -f $(LOGFILE ) || touch $(LOGFILE )
3944 chmod a+w $(LOGFILE )
4045 docker run --rm -it \
4146 --mount type=bind,source="$(LOGFILE ) ",target=/app/experiment.log \
4247 --mount type=bind,source="$(RESULTS ) ",target=/app/results \
43- $(IMAGE_quick )
48+ $(IMAGE )
49+ endef
50+
51+
52+ run-quick :
53+ $(call WITH_DOCKER,false)
4454
4555run-full :
46- docker buildx build \
47- --build-arg $(if $(EXPERIMENTS ) ,EXPERIMENTS="--experiments $(EXPERIMENTS ) ) " \
48- --build-arg $(if $(SUITES ) ,SUITES="--suites $(SUITES ) ) " \
49- --build-arg $(if $(MEASUREMENTS ) ,MEASUREMENTS="--measurements $(MEASUREMENTS ) ) " \
50- --target runtime \
51- --tag $(IMAGE_full ) \
52- --load .
53- @test -f $(LOGFILE ) || touch $(LOGFILE )
54- chmod a+w $(LOGFILE )
55- docker run --rm -it \
56- --mount type=bind,source=" $( LOGFILE) " ,target=/app/experiment.log \
57- --mount type=bind,source=" $( RESULTS) " ,target=/app/results \
58- $(IMAGE_full )
56+ $(call WITH_DOCKER,true)
5957
6058tarball :
6159 @echo " Compressing $( BIN_DIR) with maximum compression..."
6260 cd artefacts && tar -cf - bin | xz -9e > $(BIN_ARCHIVE )
6361 @echo " Created $( BIN_ARCHIVE) ($$ (du -h artefacts/$( BIN_ARCHIVE) | cut -f1))"
6462
65- fetch-binaries : venv
66- @mkdir -p $(PREBUILT_DIR )
67- @echo " Downloading from Google Drive..."
68- @gdown $(GDRIVE_FILE_ID ) -O $(GDRIVE_ARTEFACT )
69- @echo " Download complete. File size: $$ (du -h $( GDRIVE_ARTEFACT) | cut -f1)"
70- @echo " Unzipping $( GDRIVE_ARTEFACT) to $( PREBUILT_DIR) ..."
71- tar -xvf $(GDRIVE_ARTEFACT ) -C $(PREBUILT_DIR ) # Fixed typo
72- @echo " Done"
63+ fetch-binaries : $(GDRIVE_ARTEFACT )
64+
65+ $(GDRIVE_ARTEFACT ) :
66+ ./fetch_binaries.sh
7367
7468bare-metal : venv
7569 @$(INVOKE ) build-benchmarks \
76- $(if $(EXPERIMENTS ) ,--experiments $(EXPERIMENTS ) ) \
77- $(if $(SUITES ) ,--suites $(SUITES ) ) \
78- $(if $(MEASUREMENTS ) ,--measurements $(MEASUREMENTS ) )
70+ $(EXP_ARG ) \
71+ $(SUITE_ARG ) \
72+ $(MEASURE_ARG )
73+
74+ @$(INVOKE) run-benchmarks \
75+ $(if $(PEXECS),$(PEXECS),$(FULL_PEXECS)) \
76+ $(EXP_ARG) \
77+ $(SUITE_ARG) \
78+ $(MEASURE_ARG)
7979
0 commit comments