如何使用GPU.js提高JavaScript应用性能

  介绍

这篇文章主要介绍如何使用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.js提高JavaScript应用性能

如你所见,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上指定的步骤运行基准测试。

如何使用GPU.js提高JavaScript应用性能