All Projects → sedflix → SadlyDistributed

sedflix / SadlyDistributed

Licence: GPL-3.0 License
Distributing your code(soul), in almost any language(state), among a cluster of idle browsers(voids)

Programming Languages

javascript
184084 projects - #8 most used programming language
go
31211 projects - #10 most used programming language
Dockerfile
14818 projects
HTML
75241 projects
python
139335 projects - #7 most used programming language
C++
36643 projects - #6 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to SadlyDistributed

Pont
An online board game in Rust and WebAssembly
Stars: ✭ 218 (+990%)
Mutual labels:  websockets, webassembly
Pychat
webchat via WebSockets/WebRTC that allows messaging/video call/screen sharing
Stars: ✭ 152 (+660%)
Mutual labels:  websockets, webassembly
Construct
JavaScript Digital Organisms simulator
Stars: ✭ 17 (-15%)
Mutual labels:  websockets, distributed-computing
marsjs
Label images from Unsplash in browser - using MobileNet on Tensorflow.Js
Stars: ✭ 53 (+165%)
Mutual labels:  distributed-computing, volunteer-computing
magnum-integration
Integration libraries for the Magnum C++11/C++14 graphics engine
Stars: ✭ 75 (+275%)
Mutual labels:  webassembly
go-wasm-examples
Some small examples of using Go and WebAssembly
Stars: ✭ 22 (+10%)
Mutual labels:  webassembly
reactive-streams-for-java-developers
No description or website provided.
Stars: ✭ 16 (-20%)
Mutual labels:  websockets
EthernetWebServer
This is simple yet complete WebServer library for AVR, Portenta_H7, Teensy, SAM DUE, SAMD21/SAMD51, nRF52, STM32, RP2040-based, etc. boards running Ethernet shields. The functions are similar and compatible to ESP8266/ESP32 WebServer libraries to make life much easier to port sketches from ESP8266/ESP32. Coexisting now with `ESP32 WebServer` and…
Stars: ✭ 118 (+490%)
Mutual labels:  websockets
Babylon.Font
Generate text mesh for BabylonJS using WASM, written in AssemblyScript.
Stars: ✭ 22 (+10%)
Mutual labels:  webassembly
haskell-tic-tac-toe
A multiplayer web real-time implementation of the famous Tic Tac Toe game in Haskell.
Stars: ✭ 51 (+155%)
Mutual labels:  websockets
rustexp
A Rust regular expression editor and tester that runs entirely within the browser!
Stars: ✭ 59 (+195%)
Mutual labels:  webassembly
streamingDemo
No description or website provided.
Stars: ✭ 56 (+180%)
Mutual labels:  websockets
CipherCompute
The free EAP version of the Cosmian Collaborative Confidential Computing platform. Try it!
Stars: ✭ 20 (+0%)
Mutual labels:  distributed-computing
server
Hashtopolis - A Hashcat wrapper for distributed hashcracking
Stars: ✭ 954 (+4670%)
Mutual labels:  distributed-computing
LazWebsockets
Websocket Server and Client Library written in Lazarus
Stars: ✭ 51 (+155%)
Mutual labels:  websockets
libOpenDRIVE
Small, lightweight C++ library for handling OpenDRIVE files
Stars: ✭ 104 (+420%)
Mutual labels:  webassembly
awesome-swiftwasm
A community-driven curated list of SwiftWasm projects and content
Stars: ✭ 117 (+485%)
Mutual labels:  webassembly
idris-codegen-wasm
WebAssembly Code Generation Backend for Idris Compiler
Stars: ✭ 79 (+295%)
Mutual labels:  webassembly
wapc-rust
Rust-based WebAssembly Host Runtime for waPC-compliant modules
Stars: ✭ 75 (+275%)
Mutual labels:  webassembly
ricardo-forth
Forth dialect implemented in C, Javascript, WebAssembly and compiled from C to asm.js and WebAssembly.
Stars: ✭ 26 (+30%)
Mutual labels:  webassembly

SadlyDistributed

Making volunteer computing easy af.
Zero Setup for volunteers. Easy for developers.

We compile your distributed code in almost any language to WebAssembly and then all of it is executed in a cluster of browsers. Anyone who just opens our website in their browser will share his or her computing power with us.

Motivation

We are aware of the amazing computing power of our laptops and phones. What if the scientist around the world would be able to use it when its lying idl(which is most of the time)? What if everyone with a computing device, a browser, and a decent internet connection would be able to contribute to such amazing research happening around the world? Today's world is a sucker for computing resources. ML, AR, VR, Blockchain and tons of other cutting edge tech require tons of computing resources.

There are several nice volunteer computing platform like BONIC, GridCoin, etc. But all of them suffer from a common problem: complex and heavy installation process. Even I, as a techie, hesitate to go through all that hassle. You know setting up anything sucks. Therefore, we came up with SadlyDistributed.

Installation

We <3 Docker. Hence, we have provided a Dockerfile that takes care of all the dependencies of our server code.

Building Docker file

    docker build -t sadlyDistributed .

Running our Server(with Prime Number Example)

    docker run -it -p 8899:8899 sadlyDistributed

Mini-Tutorial

How can you modify your distributed code for our architecture?

We have an example program for finding if a number(it can be as large as you can think of) is prime or not.
Code: /client/programs/1

In general distributed computer, same code is replicated on multiple machines and each machine execute the code over a different range of values(or parameters). The output from multiple machines is combined to produce the final output. Your job, as developer, is to give us your pre-existing distributed code, in almost any language. The code should take input from stdin and gives output to stdout. After that, you need to define how the range of values should be divided and how the results from them should be combined to produce the final answer. After you have defined this logic, we scale your code to all the browsers available to us.

You code interface with our architecture by reading and writing from files. We have two files:

input

You specify the parameters that your code will take in. Each parameters is present in a new line. Our prime number uses the following format:

1 110000
110000 9990000
9990000 99900000
99900000 99900000
<number 1><space><number 2>

Note that our distributed code, bigprimes.go, is written to understand these range. In other words, go run bigprimes.go 110000 9990000 will tell us weather our hardcoded number is divisible by anything between 110000 and 9990000. Our architecture read this file continuously(as new input arrives or so called tail reading) and distributes the parameters over free nodes.

output

Our architecture writes the stdout(or output) received from various machine to this file. Now it is upto you to utilize the info in this file for combining the result. Our prime number used the following format:

1 110000    false
99900000 99900000   false
110000 9990000  false
<parameter><tab><output>

The parameter is same as specified in the input file. And the output is what your code wrote to stdout when given those parameters. Our architecture updates this file as it receives output from different browsers.

In our prime number example, we use two file in two different language to show how our approach is language-agnostic. We have used GoLang for the code that needs to be distributed. And we have used python for generating inputs and combining the output. Neat, right?

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].