Repolode
gpujs

gpujs/gpu.js

GPU.js 可将简单的 JavaScript 函数转译为 GPU 着色器代码,在浏览器和 Node.js 中加速计算,无 GPU 时回退到普通 JavaScript。

Star
15,511
Fork
666
未关闭 Issue
68
最近提交
14天前

这是什么?

GPU.js 是一个用于浏览器和 Node.js 的 JavaScript GPU 通用计算(GPGPU)库。开发者只需编写一个计算输出数组单个元素的普通 JavaScript 函数,库会将其转译为着色器语言并编译到 GPU 上并行执行;若没有可用 GPU,同一函数会直接以普通 JavaScript 运行。

核心接口是 gpu.createKernel(),通过 setOutput() 设置输出尺寸,在函数内用 this.thread.x、y、z 获取当前位置。支持的后端包括 WebGL、WebGL2、Node 下的 headless GL、WebAssembly、可选启用的 WebGPU 以及 CPU 回退。多个内核可用 combineKernels() 组合,或通过流水线让中间结果保留在设备上,减少数据回传。

此外,它还支持将结果输出到 canvas 进行图形渲染,提供可用断点调试内核代码的 dev 模式,并附带 TypeScript 类型定义。项目的 v3 版本计划让内核调用统一返回 Promise,目前已可通过 async 模式使用。

核心功能

  • 01自动将普通 JavaScript 函数转译为 GPU 着色器代码。
  • 02没有可用 GPU 时回退到普通 JavaScript 执行。
  • 03支持浏览器与 Node.js,可使用 WebGL、WebGL2、headless GL 和 WebGPU 后端。
  • 04通过 combineKernels() 和流水线组合内核,减少数据在 CPU 与 GPU 间的往返。
  • 05图形模式下可将结果渲染到 canvas。
  • 06提供 dev 调试模式,并附带 TypeScript 类型定义。

适用场景

  • 在网页中加速矩阵运算或数值计算。
  • 在浏览器中对像素数据进行图像处理或滤镜运算。
  • 在迁移到底层实现前,用 JavaScript 快速验证 GPU 并行算法。
  • 在有 GPU 的 Node.js 服务中加速数据密集型计算。

快速上手

  1. 1

    从 npm 安装包

    npm install gpu.js
  2. 2

    在 Node.js 中创建 GPU 实例和内核

  3. 3

    通过 script 标签或 CDN 使用浏览器版本

使用前须知

  • 下一个主要版本 v3 会让每次内核调用返回 Promise,这会破坏当前的同步代码。
  • 同步内核调用依赖 WebGL 回读,会阻塞主线程。

标签

常见问题

gpu.js 是什么?
GPU.js 可将简单的 JavaScript 函数转译为 GPU 着色器代码,在浏览器和 Node.js 中加速计算,无 GPU 时回退到普通 JavaScript。 GPU.js 是一个用于浏览器和 Node.js 的 JavaScript GPU 通用计算(GPGPU)库。开发者只需编写一个计算输出数组单个元素的普通 JavaScript 函数,库会将其转译为着色器语言并编译到 GPU 上并行执行;若没有可用 GPU,同一函数会直接以普通 JavaScript 运行。
gpu.js 可以免费使用吗?用的什么许可证?
gpu.js 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
gpu.js 还在维护吗?
活跃维护中。gpu.js 最近一次提交是在 2026年10月5日。
gpu.js 适合用来做什么?
在网页中加速矩阵运算或数值计算。 在浏览器中对像素数据进行图像处理或滤镜运算。 在迁移到底层实现前,用 JavaScript 快速验证 GPU 并行算法。 在有 GPU 的 Node.js 服务中加速数据密集型计算。
gpu.js 怎么安装和运行?
从 npm 安装包: npm install gpu.js 在 Node.js 中创建 GPU 实例和内核 通过 script 标签或 CDN 使用浏览器版本
在哪里获取 gpu.js?
源代码和安装说明在 GitHub 上:https://github.com/gpujs/gpu.js

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目