This is the source code of the work from the paper "DRAMatic Speedup: Accelerating HE Operations on a Processing-in-Memory System".
The project is split between code running on the DPUs and code running on the host (the CPU). Only some definition and configuration files are shared.
dpu/contains code for the DPUs.host/contains code for the host, as well as test results and plots.shared/contains shared definitions.
The host files are additionally split:
host/compare-seal-dpu/is the main implementation of DRAMatic (the path is for historical reasons).host/contains some additional tests and low-level comparisons.
The DPU code can be compiled by running dpu/do_build or dpu/do_build_tests, which also compiles tests.
You will need to install the UPMEM SDK to get the dpu-upmem-dpurte-clang compiler.
The host implementation is build using CMake:
cd host/compare-seal-dpu
cmake -S . -B build
cmake --build buildWe recommend using CC=clang, CXX=clang++.
Depending on how you installed the UPMEM SDK, you might have to set UPMEM_HOME by running upmem-sdk/upmem_env.sh (see SDK documentation).
Depending on how you installed SEAL, you might have to set SEAL_DIR,
e.g. export SEAL_DIR=/home/<USERNAME>/install/lib/cmake/SEAL-4.1.
The DPU binaries cannot be run directly.
They must either be loaded by a host program
or run with the debugger, e.g. lldb dpu/out/benchmark_muls.
See the source files for details.
The main binary of DRAMatic is host/compare-seal-dpu/build/benchmark.
It can test both SEAL and DRAMatic. See the source file for details.