# experiments

## Running

(Optional: Use [virtualenv](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/))

```
pip install -r requirements.txt
jupyter-lab
```

The `shell.nix` contains a workaround for NixOS and is not necessary for normal use.

## Building NAStJA for Experiments

Build it either with or without CUDA support.
When NAStJA is built with CUDA support it will automatically switch to the GPU implementation of the dynamic ECM.
I use the `mold` linker because it makes the code-build-test-loop slightly shorter.
This shouldn't have any impact on the performance of the produced binary.
If you would like to shorten the linking time even further you can add `-DNASTJA_ENABLE_IPO=OFF` to turn of Link Time Optimization (LTO).
However, it is likely that will have an impact on performance.

```
cmake .. -DCMAKE_CXX_FLAGS="-fuse-ld=mold"
cmake .. -DCMAKE_CXX_FLAGS="-fuse-ld=mold" -DNASTJA_ENABLE_CUDA=ON
```
