CUDA bindings for Node.js - bringing GPU computing to JavaScript.
- 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
- 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+
Download and install from NVIDIA Developer.
Make sure nvcc
is in your PATH:
nvcc --version
npm install cuda.js
Note: First installation may take several minutes as it compiles native code.
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();
npm run example:basic
git clone https://github.com/sammwyy/cuda.js.git
cd cuda.js
npm install
npm run build
npm test
cuda.js/
├── native/ # Native C bindings
├── src/ # JavaScript bindings
├── test/ # Test suite
└── lib/ # Compiled output
# Run all tests
npm test