parent
14e3725fa9
commit
79ba15ecd2
@ -0,0 +1,76 @@
|
||||
|
||||
PROJECT = fcmprs
|
||||
|
||||
CARGO_FEATURES?= threads
|
||||
|
||||
OPT_FLAGS?= -C target-cpu=native
|
||||
RUSTFLAGS?=
|
||||
|
||||
PROF_DIR=/tmp/fcmprs/prof
|
||||
PROF_ITERATIONS?=100
|
||||
PROF_LOCATION?=/tmp/fcmprs-profiters
|
||||
|
||||
PROF_LARGE_BOUND= $$(( 1024 * 1024 * 10 ))
|
||||
PROF_SMALL_BOUND= $$(( 1024 * 10 ))
|
||||
|
||||
.PHONY: release
|
||||
release: target/release/$(PROJECT)
|
||||
|
||||
.PHONY: debug
|
||||
debug: target/debug/$(PROJECT)
|
||||
|
||||
.PHONY: pgo
|
||||
pgo: target/release/$(PROJECT)-pgo
|
||||
# Currently broken.
|
||||
|
||||
|
||||
target/release/$(PROJECT): RUSTFLAGS+= $(OPT_FLAGS)
|
||||
target/release/$(PROJECT):
|
||||
RUSTFLAGS="$(RUSTFLAGS)" cargo build --release --no-default-features $(addprefix --features ,$(CARGO_FEATURES))
|
||||
strip $@
|
||||
|
||||
target/debug/$(PROJECT):
|
||||
RUSTFLAGS="$(RUSTFLAGS)" cargo build --no-default-features $(addprefix --features ,$(CARGO_FEATURES))
|
||||
|
||||
pgo-generate: RUSTFLAGS+= -Cprofile-generate=$(PROF_DIR)
|
||||
pgo-generate: target/release/$(PROJECT)
|
||||
|
||||
pgo-profile: pgo-generate
|
||||
for i in {1..$(PROF_ITERATIONS)}; do \
|
||||
rm -rf $(PROF_LOCATION); \
|
||||
mkdir -p $(PROF_LOCATION)/{large,small}; \
|
||||
printf "Iteration $$i of $(PROF_ITERATIONS)\r"; \
|
||||
../profile/gen $(PROF_LARGE_BOUND) "$(PROF_LOCATION)/large" >> /dev/null; \
|
||||
../profile/gen $(PROF_SMALL_BOUND) "$(PROF_LOCATION)/small" >> /dev/null; \
|
||||
./target/release/fcmprs $(PROF_LOCATION)/large/matching/* & > $(PROF_LOCATION)/stdout; \
|
||||
./target/release/fcmprs $(PROF_LOCATION)/large/unmatching/* & > $(PROF_LOCATION)/stdout; \
|
||||
./target/release/fcmprs $(PROF_LOCATION)/small/matching/* & > $(PROF_LOCATION)/stdout; \
|
||||
./target/release/fcmprs $(PROF_LOCATION)/small/unmatching/* & > $(PROF_LOCATION)/stdout; \
|
||||
\
|
||||
./target/release/fcmprs $(PROF_LOCATION)/small/matching/{1,2} & > $(PROF_LOCATION)/stdout; \
|
||||
./target/release/fcmprs $(PROF_LOCATION)/large/matching/{1,2} & > $(PROF_LOCATION)/stdout; \
|
||||
./target/release/fcmprs $(PROF_LOCATION)/small/unmatching/{1,2} & > $(PROF_LOCATION)/stdout; \
|
||||
./target/release/fcmprs $(PROF_LOCATION)/large/unmatching/{1,2} & > $(PROF_LOCATION)/stdout; \
|
||||
wait; \
|
||||
rm -rf $(PROF_LOCATION)/{large,small}; \
|
||||
done
|
||||
@echo ""
|
||||
rm -rf $(PROF_LOCATION)
|
||||
llvm-profdata merge -o $(PROF_DIR)/merged.profdata $(PROF_DIR)
|
||||
|
||||
pgo-use: RUSTFLAGS+= -Cprofile-use=$(PROF_DIR)/merged.profdata -Cllvm-args=-pgo-warn-missing-function
|
||||
pgo-use: target/release/$(PROJECT)
|
||||
|
||||
pgo-reset:
|
||||
rm -rf $(PROF_DIR)
|
||||
mkdir -p $(PROF_DIR)
|
||||
|
||||
|
||||
target/release/$(PROJECT)-pgo: | pgo-reset pgo-profile
|
||||
#rm -rf target
|
||||
CARGO_INCREMENTAL=0 $(MAKE) -B pgo-use
|
||||
mv -f target/release/$(PROJECT) $@
|
||||
|
||||
clean:
|
||||
rm -rf target
|
||||
rm -rf $(PROF_LOCATION) $(PROF_DIR)
|
Loading…
Reference in new issue