JSPM

cuda.js

0.0.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q20234F
  • License ISC

Package Exports

    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