Inspiration

I was inspired to create when I was first introduced to the Distributed Compute Protocol in May 2020. I was fascinated by the thought of being able to easily deploy computationally heavy tasks to various computers on the internet that would together form a virtual supercomputer. I was inspired to create this project because of the large amount of uses that matrix multiplication has in modelling real-world phenomenon in physics.

Over the past few months, I've began studying quantum computing, especially modelling quantum circuits and logic gates. Modelling quantum bits (qubits) on a classical computer is a very heavy task whose complexity and runtime grows exponentially. To model a single qubit, you need to do matrix multiplication on a 2x2 matrix. To model 10 qubits, you need to do matrix multiplication on a 1024x1024 matrix. To model 50 qubits, which is what is generally considered to be the minimum amount of qubits required to demonstrate quantum supremacy, you would need to do matrix multiplication on a 1,125,899,906,842,624x1,125,899,906,842,624 matrix.

Of course, there are many other common use cases like flow simulation, but the example above clearly shows how quickly the complexity of matrix multiplication can increase. It is impossible to quickly perform these massive tasks on a single computer chip, scaling horizontally. Instead, Distributed Matrix Multiplication leverages the Distributed Compute Protocol to scale horizontally, allowing developers to run countless calculations in parallel with ease, so that complex matrix multiplication can be done as efficiently as possible.

What it does

Distributed Matrix Multiplication allows developers to run countless calculations in parallel with ease by leveraging the Distributed Compute Protocol so that complex matrix multiplication can be done as efficiently as possible.

How we built it

I built this Node.js library by connecting the Distributed Compute Protocol Node.js library with custom logic to separate any 2D real-number matrix multiplication task into multiple tiny subtasks. By breaking one major task down into many, we can harness the benefits of parallel computing. By further connecting it with the Distributed Compute Protocol, we can harness these parallel computing benefits on an even greater scale since we are no longer limited by the number of cores/threads on our local cpu.

Challenges we ran into

This is the 3rd time I've worked with DCP at a hackathon so I didn't have too many problems with that, but I did have some minor issues with JavaScript promises and async functions. Overall, I'd say it still went very smoothly.

Accomplishments that we're proud of

I'm proud that I was able to finish this project on my own in only one full day of coding.

What we learned

I learned a lot about working with DCP in Node.js and deploying tasks to the scheduler.

What's next for Distributed Matrix Multiplication

I want to further optimize and improve the code and various other parts of Distributed Matrix Multiplication.

Built With

+ 3 more
Share this project:

Updates