Skip to content

Latest commit

 

History

History
25 lines (22 loc) · 2.15 KB

REPO_LAYOUT.md

File metadata and controls

25 lines (22 loc) · 2.15 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.
  • spu/: Core implementations of SPU.
    • binding/: Python binding of the SPU device.
    • compiler/: SPU's compiler stack. It accepts the standard XLA IR along with inputs mpc metadata and lowering the XLA IR to a mpc specific IR.
    • core/: Basic data structures used in SPU.
    • crypto/: Crytographic primitives used in mpc protocols, say oblivious transfer.
    • 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 operators, which matches the definition of pphlo.
      • hal/: Hardware adapt layer implements crypto independent core logics, say the 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.