- Master node: The largest computer responsible for partitioning the matrix, encoding, and distributing tasks to smaller worker nodes for computation. It also collects results from workers to verify integrity.
- Worker: A subordinate computer responsible for computing submatrices and sending results back to the server (which the Master node receives).
- Encode Function: Two encoding functions responsible for encoding the divided matrices using F, G functions.
- Accelerates computation speed.
- Addresses large-scale matrix multiplication problems.
- Enhances scalability.
- More complex compared to traditional methods.
- Requires a high-performance computer network (high processing speed and substantial configuration requirements).
Master node partition the matrix
where
The resulting matrix
with
The Master node encodes the submatrices of X & Y using the functions F & G below:
where F and G are encode function satisfied F:
The coefficient of
The master node will collect the fastest R results returned by the workers. Afterward, the master node will recover the result
Since the degree of the polynomial is
and communication load is:
To accomplish this objective,we add rows or columns containing random elements to matrices A and B, respectively.From there, we consider two distinct cases:
Matrix
Matrix
The encoding functions
Matrix
The matrix
The encoding function in this case will be represented:
Let
In case:
In case:
After generating the key, the master code will send
After receiving the result
corresponding to cases
Similar to the recovery step mentioned above, the master node will collect the results returned from the worker nodes to determine the coefficients through polynomial interpolation. It is important to note that these returned results must satisfy the key-checking step to be considered valid.
If the returned result is accurate, we add it to the
For a given security level
For a given security level
And communication load in both cases:
pip install -r requirements.txt
python server.py
cd Distributed-Computing
docker compose up
You should use ncat in Windows: Nmap tool
ncat localhost 9999
nc localhost 9999
(9999 is default port in this project, you can change port with Dockerfile and docker-compose.yml)
Please check our research paper for more information: A Secure PolyDot Matrix Multiplication Approach For Distributed Computing
- Thai Son Dinh: [email protected]
- Dang Anh Duc Pham: [email protected]
Buy me a coffee ☕: https://www.buymeacoffee.com/spid3r
Thank you for visiting and using this project! If you have any questions or need further assistance, please contact the authors.