This code and following instructions is tested on Ubuntu 20.04, with g++ 11.4.0 and CMake 3.22.2
Note that we need to install volepsi into the directory of MPSU
# in MPSU
git clone https://github.com/Visa-Research/volepsi.git
cd volepsi
git checkout 63990d8b873622844bb0ac588ab19d2ca66f062e
# compile and install volepsi
python3 build.py -DVOLE_PSI_ENABLE_BOOST=ON -DVOLE_PSI_ENABLE_GMW=ON -DVOLE_PSI_ENABLE_CPSI=OFF -DVOLE_PSI_ENABLE_OPPRF=OFF
python3 build.py --install=../libvolepsi
cp out/build/linux/volePSI/config.h ../libvolepsi/include/volePSI/Note that we need to install ecelgamal into the directory of MPSU
# in MPSU
mkdir -p libelgamal/lib
cd elgamal_openssl
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=../../libecelgamal/lib
make
make install# in MPSU
mkdir build && cd build
cmake ..
make# for LAN setup
./sn.sh on 0.02 10000
# for WAN setup
./sn.sh 80 400
# turn off
./sn.sh offCompute PSU of 3 parties each with set size
cd build
# run
./main [num party] [num element]You can substitute corresponding experiment number into [num party] and [num element]
For example, here is the code to test MPSU performance on 4 parties and 256 elements:
./main 4 256We've run this code on a single server with AMD EPYC 74F3 processors and 256 GB of RAM. Here is the benchmark result
| Set size | |||||
|---|---|---|---|---|---|
| LAN | 0.15 | 0.26 | 0.53 | 0.90 | |
| 0.35 | 0.49 | 2.02 | 3.44 | ||
| 2.17 | 3.74 | 7.88 | 13.49 | ||
| 8.28 | 14.553 | 31.45 | 53.458 | ||
| 32.28 | 57.31 | 121.80 | 211.95 | ||
| WAN | 1.03 | 1.50 | 3.90 | 6.66 | |
| 2.74 | 4.51 | 8.27 | 11.51 | ||
| 5.28 | 8.73 | 15.47 | 24.45 | ||
| 12.88 | 21.20 | 41.36 | 67.67 | ||
| 38.62 | 66.29 | 139.22 | 239.35 | ||
| Communication | 0.16 | 0.34 | 0.89 | 1.69 | |
| 0.64 | 1.35 | 3.54 | 6.77 | ||
| 2.58 | 5.41 | 14.18 | 27.07 | ||
| 10.31 | 21.66 | 56.72 | 108.28 | ||
| 41.25 | 86.63 | 226.88 | 433.13 |