npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cuno

v0.0.0

Published

A node addon for [Dannjs](https://dannjs.org).

Downloads

4

Readme

Cuno | Dannjs Cuda Addon

A node addon for Dannjs.

Provides cuda bindings, kernel maps and device memory managment for Dannjs computations.

The goal is to speed up Dann.prototype.backpropagate by implementing a batch system (Instead of training case by case, we would train a whole dataset batch at once). The current alias Dann.prototype.train would also take in a different set of arguments, for batch/gpu training

A Cuda kernel map would compute all model changes throughout the batch. This is to reduce Memcpy's in the device's memory, thus help reduce training times along with the cuda parallelisation.

Install

git clone https://github.com/matiasvlevi/Cuno.git

cd Cuno
git checkout dev

npm run init

Build

The build configuration may not be supported on your system, please submit binding.gyp changes to allow for a broader range of systems

Build CUDA source with node-gyp (nvcc)

npm run build

Build the Dannjs Source

cd Dann
npm run build:fix

(optional) run Dannjs unit tests

cd Dann
npm run test

Run/Test

Run Javascript tests

benchmark will create a benchmark.csv file containing performance results.

npm run benchmark
npm run test

Performance

Here is a logarithmic graph comparing matrix dot products with the Cuno Addon and with native JS

Image


Current APIs

These are the current stable bindings, not the final target bindings

Nodejs API

const Cuno = require('cuno');

const a = [
  [1, 3, 1],
  [2, 4, 6],
  [4, 1, 2],
  [3, 2, 4]
];

const b = [
  [3, 2, 1, 3],
  [5, 1, 1, 4],
  [4, 9, 1, 2]
];

let c = Cuno.dot(a, b);
console.log(c);

CPP API

Allocate & Initialize a neural network

const int LENGTH = 5
const int ARCH[LENGTH] = { 
  32 * 32 * 3,
  32 * 32,
  24 * 24,
  16 * 16,
  10
};

// Allocate Model
Cuno::DeviceDann<double> *nn = new Cuno::DeviceDann(ARCH, LENGTH);

// Memory transfer
nn->toDevice(
  // * weights, biases, layers, errors, gradients  * //
);

// Feed Forward 
double inputs[ARCH[0]] = {};
Cuno::Wrappers::ffw(nn, inputs);