cuda.js
Version:
CUDA bindings for Node.js
114 lines (84 loc) โข 2.58 kB
Markdown
# Cuda.JS
CUDA bindings for Node.js - bringing GPU computing to JavaScript.
[](https://www.npmjs.com/package/cuda.js)
[](https://github.com/sammwyy/cuda.js/actions)
## ๐ 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](https://developer.nvidia.com/cuda-toolkit).
Make sure `nvcc` is in your PATH:
```bash
nvcc --version
```
### 2. Install Cuda.JS
```bash
npm install cuda.js
```
**Note**: First installation may take several minutes as it compiles native code.
## ๐ Quick Start
```javascript
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
```bash
npm run example:basic
```
## ๐ ๏ธ Development
### Building from Source
```bash
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
```bash
# Run all tests
npm test
```