PIM: Processing-In-Memory—computation performed inside or near memory units to reduce data movement
UPMEM: A commercial general-purpose PIM architecture integrating processors (DPUs) directly into DRAM modules
DPU: DRAM Processing Unit—the core processor inside UPMEM modules, possessing its own MRAM (main memory) and WRAM (scratchpad)
MA-SGD: Model Averaging SGD—workers update local models independently and periodically average them at a central server
GA-SGD: Gradient Averaging SGD—workers compute gradients on parts of a batch and synchronize gradients at every step
ADMM: Alternating Direction Method of Multipliers—an optimization algorithm that decomposes problems into sub-problems solved locally, requiring less frequent synchronization
SPMD: Single-Program Multiple-Data—a programming model where multiple threads execute the same program on different data items
MRAM: Magnetoresistive Random Access Memory—used here to refer to the 64MB DRAM bank exclusive to each DPU
WRAM: Working RAM—64KB SRAM scratchpad memory within each DPU used for operands and instructions
LUT: Look-Up Table—a method to approximate complex functions (like sigmoid) using precomputed values, essential for DPUs lacking floating-point units