Giter Site home page Giter Site logo

randomx-fpga's Introduction

RandomX FPGA

This is my first HDL Design, I would appreciate suggestions for improvement.

In order to make the development less time consuming, I skipped the dataset generation. Instead, the dataset is sent to the FPGA DRAM.

A digital design is much more expensive to maintain so I let the community do further updates and changes.

How it works?

RandomX has been considered ASIC and FPGA resistance due to the amount of needed memory and the VM.

With new accelerator cards, The DRAM won't be an issue since you can use AWS F1 with 64GB memory and if you need more, You are able to connect different Instances.

What about the VM?

Quote from RandomX README:

RandomX generates multiple unique programs for every hash, so FPGAs cannot dynamically reconfigure their circuitry because typical FPGA takes tens of seconds to load a bitstream. It is also not possible to generate bitstreams for RandomX programs in advance due to the sheer number of combinations (there are 2^512 unique programs).

It appears the developers assumed that to run the instructions we need to implement every possible program.

Just like the VM itself, We need to only implement 29 instructions. For instance, if FPGA encountered an OP Code that corresponds to adding values, We only need to implement the ADD operation.

Overall an FPGA has a very limited clock speed than a CPU, Only an ASIC can outperform it.


I also implement it in python to have better understanding of the algorithm for easier hardware design:

https://github.com/MainSilent/py-RandomX

Credit:

Blake2: https://github.com/christian-krieg/blake2

randomx-fpga's People

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

randomx-fpga's Issues

Implementation Benchmark

Have you implemented this design on an FPGA and if so what was the resource usage and performance like?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.