Third-Party Dependencies

The majority of third-party dependencies are open-source and available from public internet endpoints. Table 3 contains details for each dependency including the version, license, and description of usage by the uPSP software.

The only current commercial dependency is the Message Passing Interface (MPI) implementation used for operation of the uPSP software on the National Advanced Supercomputing (NAS) cluster at NASA Ames. The dependency is via shared library linking at build time and is required for leveraging parallelization across NAS cluster nodes. Prior to release of uPSP source code to non-NAS environments, this dependency will be revisited to identify proper alternatives (there are open-source MPT/MPI implementations available, however, they are not needed in the NAS environment).

Table 3 Third-Party Dependencies

Name

Version

License

Description of usage

Boost

1.68.0

Boost License

C++ routines for efficient data structure manipulation (e.g., array iterators)

CMake

3.20.5

3-clause BSD

Build system for uPSP project

Eigen

3.3.9

MPL2

Header-only software dependency, used for high-performance linear algebra and matrix mathematics

gcc

8.2

GPLv3

Compiler used to build C/C++ uPSP applications (usage is covered under GPLv3 GCC runtime exception)

GOMP

1.0.0

GPLv3

GNU implementation of the OpenMP specification, for parallelization of uPSP processing (usage is covered under the GPLv3 GCC runtime exception)

GTest

1.11.0

3-clause BSD

Unit testing for C/C++ uPSP applications as part of the uPSP build system.

HDF5

1.12.0

HDF5 License

Some uPSP output data artifacts are encoded in the HDF5 format.

JSON for Modern C++

3.9.1

MIT

Header-only software dependency, used for parsing JSON files.

kdtree

0.5.7

3-clause BSD

C library for working with KD-trees, used as part of the camera-to-model data projection process.

Matplotlib

3.3.2

PSF-like

Plotting routines for Python uPSP applications.

Numpy

1.19.2

3-clause BSD

Scientific computing for Python uPSP applications.

OpenCV

4.5.2

3-clause BSD

Computer vision processing (image registration and p ost-processing).

OpenEXR

2.5.0

Modified BSD

The IlmBase library (component of OpenEXR) is used for high-performance raycasting as part of the camera-to-model data projection process.

pbrt-v3

3

2-clause BSD

High-performance raycasting as part of the camera-to-model data projection process. Several source code files from the pbrt project are copied + modified and distributed as part of the uPSP source code.

Python

3.7.9

PSF License

The Python interpreter is a necessary system dependency for running some uPSP pipeline applications. (The Python interpreter itself is not modified or redistributed as part of the release.)

Scipy

1.6.0

3-clause BSD

Scientific computing for Python uPSP applications.

SGI MPT

2.17

Commercial License

uPSP software built for deployment on the NASA Advanced Supercomputing (NAS) facility leverages the NAS-provided commercial implementation of the MPI 1.1 specification for scaling of parallel processing across the NAS cluster nodes. The library is linked to uPSP applications as a shared library.