qingchen1984 / CrowdCompute

An distrubuted computing platform. People can share their CPU and GPU power to help with tasks requiring heavy load.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CrowdCompute

Table of Contents

About The Project

An distrubuted computing platform. People can share their CPU and GPU power to help with tasks requiring heavy load. * Task creators can upload their tasks to the platform * Task executors can contribute to the tasks through primarly the web browser, but also CLI tool or windowed application

Built With

Architecture graph

Architecture graph

TODO:

  1. Planning phase

    • Check how to do computations in the browser
      • create sandboxed environment and run given code there
      • In future check how to do it with GPU
    • Check how to break big tasks into smaller ones, so they can be shared
      • Basically the task creator will write JS code which will be executed in the user's browser
    • Create graph of the project
  2. Frontend

    • Create basic website UI (purely functional)
      • Part for adding new tasks
      • Part for viewing tasks and selecting them
      • executing of tasks
      • viewing results of tasks
      • make them call the server
  3. Backend

    • Create basic website backend
      • Make API for adding tasks and add them (temporarily) to map in memory
      • Make API for getting all tasks
      • Make API for receiving results of tasks
      • Make API for seeing results of tasks
  4. Database

    • Create database
      • Make it possible to add tasks to the database
      • Make it possible to get tasks from the database
        • Consider tasks that have the same name. Should title be primary key or something else?
      • Make it possible to add results of tasks to the database
      • Make it possible to get results of tasks from the database
    • Change varchars(n) to text as in postgres it is more efficient
  5. User system

First step

* Make it possible to see the results of the tasks as an author

Ideas

  1. Possibly task creators could pay for the task execution. The payment would be split between the task executors.
  2. Create an API for using the platform outside the browser
  3. Add possiblity to use other languages than JS
  4. Add possiblity to use GPU for computations
  5. Add possibility to use the internet for verified task creators

About

An distrubuted computing platform. People can share their CPU and GPU power to help with tasks requiring heavy load.


Languages

Language:Go 86.5%Language:JavaScript 8.1%Language:HTML 5.3%Language:CSS 0.1%