Building with Bazel

qsim provides Bazel build rules for its applications and tests. To build and run all tests using Bazel, run the following command:

# AVX and OpenMP are recommended for best performance.
# See "Build configs" section below for more information.
bazel test --config=avx --config=openmp tests:all

To run a sample simulation, use the command below. Note that this command requires the circuit file to be specified both on the command line and in the data field of the qsim_base BUILD rule.

bazel run --config=avx --config=openmp apps:qsim_base -- -c circuits/circuit_q24

Build configs

Depending on the optimizers available on your machine, different config flags (such as --config=avx, above) can be set to control which optimizers are included in a given build or test run.

Vector arithmetic optimizers (pick one at most):

# Use AVX instructions for vector arithmetic.
--config=avx

# Use SSE instructions for vector arithmetic.
--config=sse

# Do not use vector arithmetic optimization (default).
--config=basic

Parallelism optimizers (pick one at most):

# Use OpenMP to run operations in parallel when possible.
--config=openmp

# Do not use OpenMP for parallelism (default).
--config=nopenmp

Memory allocation (pick one at most):

# Use tcmalloc for memory allocation.
--config=tcmalloc

# Use malloc for memory allocation (default).
--config=malloc