-
Notifications
You must be signed in to change notification settings - Fork 5
MAGE's Source Tree
The MAGE system can be understood as encompassing several layers. This is shown in Figure 2 in the OSDI 2021 paper, reproduced below:
MAGE's source code is in the src/
directory. Each layer in MAGE corresponds roughly to a subdirectory of src/
:
- The programs that are run using MAGE are, collectively, the "Application" layer. Such programs are in the
programs/
directory. This includes any application-specific code shared by multiple programs (e.g., theRecord
data structure inutil.hpp
. - MAGE's DSLs are implemented in the
dsl/
directory. This includes any libraries that are broadly useful to multiple application (e.g., theShardedArray
library inarray.hpp
). - MAGE's planner is implemented in the
memprog/
directory. - MAGE's engines are implemented in the
engine/
directory. - Protocol drivers (e.g., implementations of HalfGates and CKKS) are implemented in the
protocols/
directory. Any cryptographic routines that may be shared across multiple protocols (e.g., implementations of pseudorandom functions) are implemented incrypto/
.
Utilities shared by MAGE's different layers are implemented in the utils/
directory. Shared definitions specific to MAGE's planning, such as MAGE's instruction formats, are implemented in header files directly in src/
(not in any subdirectory); they can be extended with new instruction types. Wrappers around system calls are implemented in the platform/
directory, to make it easier to port MAGE to a different platform. Finally, the source code for executable driver programs is in the executables/
directory.