这篇文章主要介绍如何使用GPU.js提高JavaScript应用性能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
什么是GPU.js ?
GPU.js是一个针对Web和node . js构建的JavaScript加速库,用于在图形处理单元(GPGPU)上进行通用编程,它使你可以将复杂且耗时的计算移交给GPU而不是CPU,以实现更快的计算和操作。还有一个备用选项:在系统上没有GPU的情况下,这些功能仍将在常规JavaScript引擎上运行。
当你要执行复杂的计算时,实质上是将这种负担转移给系统的GPU而不是CPU,从而增加了处理速度和时间。
高性能计算是使用GPU.js的主要优势之一。如果你想在浏览器中进行并行计算,而不了解WebGL,那么GPU.js是一个适合你的库。
为什么要使用GPU。js
为什么要使用GPU执行复杂的计算的原因不胜枚举,有太多的原因无法在一篇文章中探讨。以下是使用GPU的一些最值得注意的好处。
- <李>
GPU可用于执行大规模并行GPGPU计算。这是需要异步完成的计算类型
李> <李>当系统中没有GPU时,它会优雅地退回到JavaScript
李> <李>GPU当前在浏览器和node . js上运行,非常适合通过大量计算来加速网站
李> <李>GPU.js是在考虑JavaScript的情况下构建的,因此这些功能均使用合法的JavaScript语法
李>如果你认为你的处理器可以胜任,你不需要GPU。js,看看下面这个GPU和CPU运行计算的结果。
如你所见,GPU比CPU快22.97倍。
GPU.js的工作方式
考虑到这种速度水平,JavaScript生态系统仿佛得到了一个可以乘坐的火箭.GPU可以帮助网站更快地加载,特别是必须在首页上执行复杂计算的网站。你不再需要担心使用后台线程和加载器,因为GPU运行计算的速度是普通CPU的22.97倍。
<代码> GPU。createKernel 代码>方法创建了一个从JavaScript函数移植过来的GPU加速内核。
与GPU并行运行内核函数会导致更快的计算速度,1 - 15快倍,这取决于你的硬件。
GPU.js入门
为了展示如何使用GPU。js更快地计算复杂的计算,让我们快速启动一个实际的演示。
安装
sudo apt install mesa-common-dev libxi-dev ,//, using Linux
npm
npm install gpu.js ——保存//或 yarn add  gpu.js
在你的节点项目中要导入GPU。js .
import {, GPU },得到(& # 39;gpu.js& # 39;)//或 {const GPU },=,要求(& # 39;gpu.js& # 39;) const gpu =, new GPU ();
乘法演示
在下面的示例中,计算是在GPU上并行完成的。
首先,生成大量数据。
const getArrayValues =,(),=祝辞,{//,才能在此处创建2 d 易行 const 才能;values =, [[], []]//,才能将值插入第一个数组 for 才能;(let y =, 0;, y & lt;, 600;, y + +) { ,,,的值[0].push ([]) ,,,的值[1].push ([]) ,,,//,将值插入第二个数组 ,,,for (let x =, 0;, x & lt;, 600;, x + +) { ,,,,,的值\ [0 \][y] .push (math . random ()) ,,,,,的值\ [1 \][y] .push (math . random ()) ,,,} ,,}//,才能返回填充数组 return 才能值 }
创建内核(运行在GPU上的函数的另一个词)。
const gpu =, new GPU ();//,使用,“createKernel()”,方法将数组相乘 const multiplyLargeValues =, gpu.createKernel(函数(a, b), { let 才能;sum =, 0; for 才能;(let 小姐:=,0;,小姐:& lt;, 600;,我+ +),{ ,,,sum +=, \ [this.thread.y \][我],*,b \[我\][this.thread.x]; ,,} return 才能,总和; }).setOutput ((600,, 600))
使用矩阵作为参数调用内核。
const largeArray =, getArrayValues () const out =, multiplyLargeValues (largeArray [0],, largeArray [1])
输出
console.log (\ [y \] [x]),//,将元素记录在数组的第x行和第y列 console.log(\[10 \][12]),//,记录输出数组第十行和第12列的元素
运行GPU基准测试
你可以按照GitHub上指定的步骤运行基准测试。