DOGS (Discrete Optimization Global Search) framework

Implements various search algorithms within a unified paradigm (so far, mostly anytime tree search algorithms). See this thesis for more information about anytime tree search algorithms.

Implemented components

Tree search algorithms

Decorators

Roadmap: What's next?

examples

Some examples are available for various problems. For some of them, the DOGS implementation is state-of-the-art.

Some helpful tips

Install rust

See rust getting started page.

Flamegraph profiling (Linux)

  1. Install requirements sudo apt install -y linux-tools-common linux-tools-generic
  2. Install flamegraph via cargo cargo install flamegraph
  3. Disable the sudo requirement for perf: echo -1 | sudo tee /proc/sys/kernel/perf_event_paranoid. Possibly, sudo sh -c 'echo kernel.perf_event_paranoid=1 > /etc/sysctl.d/local.conf' may allow you to do not use the previous command in every terminal.
  4. Add the following in the Cargo.toml: rust [profile.release] debug = true
  5. cargo flamegraph ARGUMENTS. For instance (SOP): cargo flamegraph insts/R.700.1000.15.sop 30
  6. Visualize the flamegraph (here by using Firefox): firefox flamegraph.svg.

Heap profiling (Linux)

We recommend using use heaptrack.

  1. Call heaptrack PROG
  2. Analyze data heaptrack_gui DATA.gz

Cache performance

We recommend using Valgrind

  1. valgrind --tool=callgrind --dump-instr=yes --collect-jumps=yes --simulate-cache=yes [PROGRAM] [ARGS]

Iterating over files (Linux)

bash for f in `ls DIRNAME/*`; do COMMAND "${f}"; done

Benchmarking

This project uses cargo-criterion.

While cargo-criterion is installed, you can just call it by: cargo criterion