Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
Streamline documentation.
  • Loading branch information
pslocum authored May 31, 2024
1 parent 722eec1 commit 78fd345
Showing 1 changed file with 20 additions and 102 deletions.
122 changes: 20 additions & 102 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ The output of the simulation is a file in egg format. It is recommended to proc
```
$ Katydid -c /path/to/config/katydid.json
```
After running Katydid, the processed fft spectra will have a span from 0 to the sampling frequency fs where fs/2 corresponds to DC. For example, if fs=200 MHz, signals that are mixed down to an intermediate frequency of 50 MHz in Locust will appear at 100 MHz + 50 MHz = 150 MHz after Katydid.

### Tutorial

Tutorial documents with examples are located in the locust-tutorial repository, [here](https://github.com/project8/locust-tutorial).
Expand All @@ -23,123 +21,43 @@ Issues should be posted via [GitHub](https://github.com/project8/locust_mc/issue
Installation
---------------

### Dependencies

**External**
- Boost (www.boost.org) version 1.66 or higher (date_time, filesystem, program_options, system, thread)
- CMake (www.cmake.org) version 3.15 or higher
- FFTW3 (3.3 or newer)
- G++ version 5.0 or higher (if compiling with GCC)
- GSL (www.gnu.org/software/gsl) version 2.0 or higher
- HDF5 (required by Monarch3 and for outputing to HDF5 files)
- ROOT (www.cern.ch/root) version 5.24 or higher (6.x should work too)

**Optional Dependencies**
- LibXml2 (xmlsoft.org)
- Log4CXX (logging.apache.org/log4cxx)
- MPI (www.open-mpi.org or mpich.org)
- OpenCL (www.khronos.org/opencl), installation details depend on your system
- OpenSSL (openssl.org) version 0.9.6 or higher
- PETSc (mcs.anl.gov/petsc)
- VTK (www.vtk.org) version 5.0 or higher
- zlib (www.zlib.net)
- pdflatex (for making the documentation; minimum version not known)
- doxygen (for making the documentation; minimum version not known)(3.1 or better)

**Submodules** (included with locust; must be fetched via Git)
- [Monarch](https://github.com/project8/monarch)
- [Scarab](https://github.com/project8/scarab)
- yaml-cpp
- [Kassiopeia](https://github.com/project8/kassiopeia)


### Operating System Support

* Mac OS X (usually tested on OS X 10.12)
* Linux (usually tested on Ubuntu)


### Installing

The following steps will build locust from source. In the terminal:

1. Clone the repository and make a build directory as recommended above. You will also have to initialize the submodules.
```
$ git clone https://github.com/project8/locust_mc
$ cd locust_mc
$ git submodule update --init --recursive
$ mkdir build
```

2. To configure the installation you can use cmake, ccmake, or cmake-gui.

```
$ cd build
$ ccmake ../
```

You will be prompted to press [c] to configure, and the window will fill up with a list of options.

To build with Locust with Kassiopeia, set ```locust_mc_BUILD_WITH_KASSIOPEIA``` to ```ON```. To generate unit test executables, set ```locust_mc_ENABLE_TESTING``` to ON. System-dependent compiler flags can be adjusted in the field ```USE_CPPxx```.

After you've finished, if you've changed anything press [c] again to configure. Then [g] to generate and exit.

3. Build and install.

```
$ make install
```

Or if you want to take advantage of parallel building to get things done faster:
```
$ make -j2 install
```

If the compiler runs into errors during the build, first check that you've updated the submodules and that you have all of the required dependencies installed (many are called "optional" on this page, but if you want to build without them you must also specify this in the cmake window). If you made a change to the dependencies or submodules, you may have to wipe the build directory and start again from step 1; simply writing `make install` again will not always work.

4. Add the locust binaries to your $PATH to call executables directly from the command line.

```
$ source /path/to/locust_mc/build/bin/kasperenv.sh
```
If you have another kassiopeia installation on your computer, you should ensure that locust is not using the environmental variables of the independent kassiopeia installation by removing this line from your .bashrc.

### Exit codes

Locust terminates with an integer exception in the following case:

* ```exit(1)``` if the digitizer range was saturated.

Immediately after Locust has finished, the exit status can be checked from a bash prompt with ```echo #?```. If the returned value is zero, then no exception was thrown. A returned value of ```1``` corresponds to the exception above. Output egg files are not written if an exception is thrown.

### Docker container
### Developing in the Project 8 luna computing environment (recommended):
* Pull the luna development container: ```ghcr.io/project8/luna:latest-dev``` .
* Clone Locust: ```git clone [email protected]:project8/locust_mc.git``` .
* Start the luna container, replacing ```/path/to/locust_mc``` with the path to your local clone of Locust: ```docker run -it --rm -v /path/to/locust_mc:/locust ghcr.io/project8/luna:latest-dev /bin/bash```.
* Compile your local installation:
* source /usr/local/p8/compute/v1.1.1/setup.sh
* cd /locust
* mkdir cbuild
* cd cbuild
* cmake -Dlocust_mc_PREBUILT_KASS_PREFIX=${KASS_PREFIX} -Dlocust_mc_BUILD_WITH_KASSIOPEIA=ON ../
* make install
* source /Kassiopeia/install/bin/kasperenv.sh
* export LD_LIBRARY_PATH=/locust/cbuild/lib:$LD_LIBRARY_PATH
* Test the executable: ```bin/LocustSim```.

### Running the software in the pre-built Docker container:

* A Docker container with Locust is available at ```ghcr.io/project8/locust_mc:latest``` .

* This Docker container can be used with Docker (with superuser privileges).

* Pull the container to your system with
```
> sudo docker pull ghcr.io/project8/locust_mc:latest
```

Open a shell inside the container with
* Open a shell inside the container with
```
> sudo docker run --rm -it ghcr.io/project8/locust_mc:latest /bin/bash
```

* The Docker container can also be used with Singularity (as a regular user without sudo).

Pull the container to your system with
* The Docker container can also be used with Singularity (as a regular user without sudo). Pull the container to your system with
```
> singularity pull docker://ghcr.io/project8/locust_mc:latest
```

Open a shell inside the container with
* Open a shell inside the container with
```
> singularity shell /path/to/local/sif/[nameOfContainer].sif
```
and to mount a local directory for e.g. I/O to the container
* Optionally, mount a local directory for e.g. I/O to the container
```
> singularity shell --no-home --bind /path/to/local/directory:/usr/local/p8/locust/current/output ./[nameOfContainer].sif
```
Expand Down

0 comments on commit 78fd345

Please sign in to comment.