Giter Club home page Giter Club logo

dcurl's Introduction

dcurl - Multi-threaded Curl implementation

Build Status Supported IRI version

Hardware-accelerated implementation for IOTA PearlDiver, which utilizes multi-threaded SIMD, FPGA and GPU.

Introduction

dcurl exploits SIMD instructions on CPU and OpenCL on GPU. Both CPU and GPU accelerations can be enabled in multi-threaded execuction fashion, resulting in much faster proof-of-work (PoW) for IOTA. In addition, dcurl supports FPGA-accelerated PoW, described in docs/fpga-accelerator.md. dcurl can be regarded as the drop-in replacement for ccurl. IOTA Reference Implementation (IRI) adaptation is available to benefit from hardware-accelerated PoW.

Build Instructions

Check docs/build-n-test.md for details.

Performance

After integrating dcurl into IRI, performance of attachToTangle is measured as following.

  • Each sampling is measured with 30 transaction trytes and total 200 samples are measured.
  • mwm = 14, 26 CPU threads to find nonce
  • Settings: enable 2 pow tasks in CPU, 1 pow tasks in GPU at the same time

IRI Adaptation

Modified IRI accepting external PoW Library Supported IRI version: 1.6.0

  • $ cd ~/iri && mvn compile && mvn package
  • $ cp ~/dcurl/build/libdcurl.so ~/iri
  • $ cd ~/iri && java -Djava.library.path=./ -jar target/iri.jar -p <port> --pearldiver-exlib dcurl

Adoptions

Here is a partial list of open source projects that have adopted dcurl. If you are using dcurl and would like your projects added to the list, please send pull requests to dcurl.

  1. iota-gpu-pow: IOTA PoW node
  • You can construct a IOTA PoW node, which uses ccurl by default
  • Generate a drop-in replacement for ccurl and acquire performance boost.
    • $ make BUILD_COMPAT=1 check
    • $ cp ./build/libdcurl.so <iota-gpu-pow>/libccurl.so
  1. iota.keccak.pow.node.js: IOTA PoW node using the iota.keccak.js implementation
  • iota.keccak.js can be used to build high performance node-js spammers but is also capable of signing inputs for value bundles. Using a smart implementation and remote PoW, it is capable of performing > 100 TPS for IRI.
  1. IOTA PoW Hardware Accelerator FPGA for Raspberry Pi took dcurl for prototyping.
  1. tangle-accelerator: caching proxy server for IOTA, which can cache API requests and rewrite their responses as needed to be routed through full nodes.
  • An instance of Tangle-accelerator can serve thousands of Tangle requests at once without accessing remote full nodes frequently.
  • As an intermediate server accelerateing interactions with the Tangle, it faciliates dcurl to perform hardware-accelerated PoW operations on edge devices.
  1. remotepow: delegate PoW to remote servers

Licensing

dcurl is freely redistributable under the MIT License. Use of this source code is governed by a MIT-style license that can be found in the LICENSE file.

dcurl's People

Contributors

ajblane avatar ender503 avatar furuame avatar jserv avatar marktwtn avatar sean-lin-tw avatar steppoff avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Forkers

yichen-ax

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.