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.
๐ 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
GpuArrayclass - 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 --version2. Install Cuda.JS
npm install cuda.jsNote: 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 testProject Structure
cuda.js/
โโโ native/ # Native C bindings
โโโ src/ # JavaScript bindings
โโโ test/ # Test suite
โโโ lib/ # Compiled output๐งช Testing
# Run all tests
npm test