- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章使用GPU.js改善JavaScript性能由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
使用GPU.js改善JavaScript性能 。
你是否曾经尝试过运行复杂的计算,却发现它需要花费很长时间,并且拖慢了你的进程?
有很多方法可以解决这个问题,例如使用web worker或后台线程。GPU减轻了CPU的处理负荷,给了CPU更多的空间来处理其他进程。同时,web worker仍然运行在CPU上,但是运行在不同的线程上.
在该初学者指南中,我们将演示如何使用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.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 --save 。
// OR 。
yarn add gpu.js 。
在你的Node项目中要导入GPU.js.
import { GPU } from ('gpu.js') 。
// OR 。
const { GPU } = require('gpu.js') 。
const gpu = new GPU(); 。
乘法演示 。
在下面的示例中,计算是在GPU上并行完成的.
首先,生成大量数据.
const getArrayValues = () => { 。
。
// 在此处创建2D arrary 。
const values = [[], []] 。
。
// 将值插入第一个数组 。
for (let y = 0; y < 600; y++){ 。
values[0].push([]) 。
values[1].push([]) 。
。
// 将值插入第二个数组 。
for (let x = 0; x < 600; x++){ 。
values\[0\][y].push(Math.random()) 。
values\[1\][y].push(Math.random()) 。
} 。
} 。
。
// 返回填充数组 。
return values 。
} 。
创建内核(运行在GPU上的函数的另一个词).
const gpu = new GPU(); 。
。
// 使用 `createKernel()` 方法将数组相乘 。
const multiplyLargeValues = gpu.createKernel(function(a, b) { 。
let sum = 0; 。
for (let i = 0; i < 600; i++) { 。
sum += a\[this.thread.y\][i] * b\[i\][this.thread.x]; 。
} 。
return sum; 。
}).setOutput([600, 600]) 。
使用矩阵作为参数调用内核.
const largeArray = getArrayValues() 。
const out = multiplyLargeValues(largeArray[0], largeArray[1]) 。
输出 。
console.log(out\[y\][x]) // 将元素记录在数组的第x行和第y列 。
console.log(out\[10\][12]) // 记录输出数组第10行和第12列的元素 。
运行GPU基准测试 。
你可以按照GitHub上指定的步骤运行基准测试.
npm install @gpujs/benchmark 。
const benchmark = require('@gpujs/benchmark') 。
const benchmarks = benchmark.benchmark(options); 。
options 对象包含可以传递给基准的各种配置.
前往GPU.js官方网站查看完整的计算基准,这将帮助你了解使用GPU.js进行复杂计算可以获得多少速度.
结束 。
在本教程中,我们详细探讨了GPU.js,分析了它的工作原理,并演示了如何进行并行计算。我们还演示了如何在你的Node.js应用中设置GPU.js.
原文地址:https://juejin.cn/post/6901937641517350919 。
最后此篇关于使用GPU.js改善JavaScript性能的文章就讲到这里了,如果你想了解更多关于使用GPU.js改善JavaScript性能的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
谁能解释或指出在多 GPU/多显示器设置中渲染如何工作的解释(或至少一些线索)? 例如,我安装了 5 个 NVIDIA Quadro 4000 视频卡并连接了 9 个显示器。显示不进行任何分组。刚刚在
以下代码报错: import spacy spacy.require_gpu() Traceback (most recent call last): File "/home/user/Pycha
正如问题已经暗示的那样,我是深度学习的新手。我知道模型的学习过程在没有 GPU 的情况下会很慢。如果我愿意等待,如果我只使用CPU可以吗? 最佳答案 在计算深度学习(以及一般的神经网络)中执行的许多操
我知道 Renderscript 的设计是为了掩盖我正在运行的处理器的事实,但是有没有办法编写代码,以便在支持 GPU 计算的设备(目前是 Nexus 10)上运行显卡?有什么方法可以判断脚本的功能正
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 8 年前。 Improv
我想以编程方式找出可用的 GPU 及其当前内存使用情况,并根据内存可用性使用其中一个 GPU。我想在 PyTorch 中执行此操作。 我在这个 post 中看到了以下解决方案: import torc
我喜欢 GPU Gems 的结构化技术摘要。但是自上次发布以来已经过去了很长时间,应该开发新算法来处理新型硬件。 我可以阅读有关最近 GPU 技术成就的哪些信息? 潜伏在编程板上是唯一的方法吗? 最佳
我一直在做一些关于测量数据传输延迟的实验 CPU->GPU 和 GPU->CPU。我发现对于特定消息大小,CPU->GPU 数据传输速率几乎是 GPU->CPU 传输速率的两倍。谁能解释我为什么会这样
当我使用选项 --gres=gpu:1 向具有两个 GPU 的节点提交 SLURM 作业时,如何获取为该作业分配的 GPU ID?是否有用于此目的的环境变量?我使用的 GPU 都是 nvidia GP
我用 gpu、cuda 7.0 和 cudnn 6.5 安装了 tensorflow。当我导入 tensorflow 时,它运行良好。 我正在尝试在 Tensorflow 上运行一个简单的矩阵乘法,但
我们正在寻找有关 slurm salloc gpu 分配的一些建议。目前,给定: % salloc -n 4 -c 2 -gres=gpu:1 % srun env | grep CUDA CUD
我是否必须自定义为非 GPU Tensorflow 库编写的代码以适应tensorflow-gpu 库? 我有一个 GPU,想运行仅为非 GPU tensorflow 库编写的 Python 代码。我
我是否必须自定义为非 GPU Tensorflow 库编写的代码以适应tensorflow-gpu 库? 我有一个 GPU,想运行仅为非 GPU tensorflow 库编写的 Python 代码。我
我正在使用 pytorch 框架训练网络。我的电脑里有 K40 GPU。上周,我在同一台计算机上添加了 1080。 在我的第一个实验中,我在两个 GPU 上观察到相同的结果。然后,我在两个 GPU 上
有没有办法在 Slurm 上超额订阅 GPU,即运行共享一个 GPU 的多个作业/作业步骤?我们只找到了超额订阅 CPU 和内存的方法,但没有找到 GPU。 我们希望在同一 GPU 上并行运行多个作业
我可以访问 4 个 GPU(不是 root 用户)。其中一个 GPU(2 号)表现怪异,它们的一些内存被阻塞但功耗和温度非常低(好像没有任何东西在上面运行)。请参阅下图中 nvidia-smi 的详细
我正在尝试通过 Tensorflow 运行示例 seq2seq,但它不会使用 GPU。以下是我在带有 Tesla K20x 的 Linux 系统上安装 Tensorflow 所采取的步骤 git cl
一位电气工程师最近提醒我不要使用 GPU 进行科学计算(例如,在精度非常重要的地方),因为没有像 CPU 那样的硬件保护措施。这是真的吗?如果是的话,典型硬件中的问题有多普遍/严重? 最佳答案 实际上
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
最近我研究了强化学习,有一个问题困扰着我,我找不到答案:如何使用 GPU 有效地完成训练?据我所知,需要与环境持续交互,这对我来说似乎是一个巨大的瓶颈,因为这项任务通常是非数学的/不可并行化的。然而,
我是一名优秀的程序员,十分优秀!