JSPM

cuda.js

0.1.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q22125F
  • License MIT

CUDA bindings for Node.js

Package Exports

  • cuda.js
  • cuda.js/lib/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (cuda.js) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Cuda.JS

CUDA bindings for Node.js - bringing GPU computing to JavaScript.

npm version Build Status

๐Ÿš€ Features

  • PyCUDA-inspired API - Familiar interface for CUDA developers
  • Runtime kernel compilation - Compile CUDA C++ code at runtime using NVRTC
  • High-level GPU arrays - Easy data management with GpuArray class
  • Memory management - Explicit control over GPU memory allocation
  • TypeScript support - Full type definitions included
  • Cross-platform - Works on Linux and Windows

๐Ÿ“‹ Requirements

  • CUDA Toolkit 11.0+ (12.0+ recommended)
  • Node.js 16+
  • Python 3.7+ (for node-gyp)
  • Compatible C++ compiler:
    • Linux: GCC 7+ or Clang 6+
    • Windows: Visual Studio 2019+

๐Ÿ”ง Installation

1. Install CUDA Toolkit

Download and install from NVIDIA Developer.

Make sure nvcc is in your PATH:

nvcc --version

2. Install Cuda.JS

npm install cuda.js

Note: First installation may take several minutes as it compiles native code.

๐Ÿƒ Quick Start

import { Cuda, GpuArray, Kernel } from 'cuda.js';

// Initialize CUDA
Cuda.init();
console.log(`Found ${Cuda.getDeviceCount()} CUDA devices`);
console.log(Cuda.getDeviceInfo(0));

// Create GPU arrays
const a = new GpuArray([1, 2, 3, 4, 5]);
const b = new GpuArray([5, 4, 3, 2, 1]);
const c = new GpuArray(5);

// Compile and run kernel
const kernel = new Kernel(`
extern "C" __global__ void vector_add(float* a, float* b, float* c, int n) {
    int i = blockIdx.x * blockDim.x + threadIdx.x;
    if (i < n) c[i] = a[i] + b[i];
}`, 'vector_add');

kernel.run([a, b, c, 5], [1, 1, 1], [256, 1, 1]);

// Get results
const result = c.download();
console.log('Result:', result); // [6, 6, 6, 6, 6]

// Cleanup
a.free();
b.free();
c.free();
kernel.free();

๐Ÿ”ฅ Examples

Basic Example

npm run example:basic

๐Ÿ› ๏ธ Development

Building from Source

git clone https://github.com/sammwyy/cuda.js.git
cd cuda.js
npm install
npm run build
npm test

Project Structure

cuda.js/
โ”œโ”€โ”€ native/             # Native C bindings
โ”œโ”€โ”€ src/                # JavaScript bindings
โ”œโ”€โ”€ test/               # Test suite
โ””โ”€โ”€ lib/                # Compiled output

๐Ÿงช Testing

# Run all tests
npm test