-
Notifications
You must be signed in to change notification settings - Fork 6
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., theRecorddata 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., theShardedArraylibrary 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.