Skip to content

Latest commit

 

History

History
32 lines (29 loc) · 2.29 KB

REPO_LAYOUT.md

File metadata and controls

32 lines (29 loc) · 2.29 KB

Repository Layout

SPU Architect

This is a high level overview of how the repository is laid out. Some major folders are listed below:

  • bazel/: Configuration for SPU's use of Bazel.
  • docs/: Documents of SPU.
  • examples/: Contains both cpp and python examples of SPU.
  • libspu/: Core C++ implementations of SPU.
    • compiler/: SPU's compiler stack. It accepts the standard XLA IR along with inputs mpc metadata and lowering the XLA IR to an mpc specific IR.
    • core/: Basic data structures used in SPU.
    • device/: SPU device Runtime. It consists of IO(infeed, outfeed), symbol tables(storage) and the IR executor.
    • dialect/: Internal MPC-specific IR used by SPU.
    • kernel/: SPU runtime kernels.
      • hlo/: High level operations, which match the definition of pphlo.
      • hal/: Hardware abstraction layer which implements crypto-independent core logics, fixed-point related abstractions and some non-linear APIs. It could be viewed as a builtin library in addition to the SPU VM.
    • mpc/: Various mpc protocols. This folder defines the standard interface different mpc protocols need to conform.
      • aby3/: The semi-honest variant of ABY3 protocol. Currently only Arithmetic and Boolean are implemented.
      • cheetah/: An excellent semi-honest 2PC protocol implemented by Alibaba-Gemini-Lab.
      • semi2k/: The semi-honest variant of SPDZ protocol. It could be shipped with different correlated random generators.
      • ref2k/: A plaintext protocol. It is aimed to serve as a reference implementation of how a new protocol could be added in SPU.
      • util/: Common utilities for different mpc protocols.
  • spu/: Python binding of libspu.