菲洛嘉青春动能素135HA FILLMED® NCTF 135HA LED指示灯的常见故障分析 智微智能 Elkhartlake K075终端,零售产业新选择 天空蓝拓客管理系统详细介绍版 muso公链项目 天使计划 是什么?[秘] 独家揭秘最前沿的家装“黑科技”——掌赋 天博体育欧洲杯特辑,东道主法兰西的失意2016 亚马逊的送货侦察员 学习听起来像挡泥板 Google Comics Factory使ML变得容易 笑着说-男性或女性 Amazon Rekognition中更好的人脸检测 关于Spaun的真相-大脑模拟 两个聊天机器人彼此聊天-有趣又怪异 GANPaint:将AI用于艺术 WCF和WF给予社区 从耳朵到脸 所有神经网络的深层缺陷 蠕虫在尾巴上平衡杆子 Kickstarter上的OpenCV AI套件 TensorFlow-Google的开源AI和计算引擎 众包取代新闻工作者 Google的DeepMind学会玩街机游戏 哑机器人V智能机器人 .NET与.NET 5融为一体 Google的深度学习-语音识别 LInQer将.NET LINQ移植到Javascript 机器人TED演讲-新的图灵测试? GAN的发明者加入苹果 您的智能手机会监视您键入的内容 人工智能帮助改善国际象棋 Zalando Flair NLP库已更新 TensorFlow 1.5包含移动版本 AlphaGo输了一场比赛-比分3-1 虚拟机器学习峰会 Microsoft开源AI调试工具 SharePoint走向移动 F#4.0发出文化变革的信号 克里斯蒂拍卖AI艺术品 人工智能如何区分 Facebook在蒙特利尔的新AI实验室 Mozilla想要您的声音 微软使用极深的神经网络赢得ImageNet 建立AI合作伙伴关系 .NET Core 3-Microsoft几乎回到了起点 神经网络-更好的销售商? Google使用AI查找您的住所 虹膜-适用于Android的Siri证明苹果没有优势 TensorFlow 2提供更快的模型训练 深度学习研究人员将为Google工作
您的位置:首页 >前端 >

JavaScript SIMD的进展

尽管大多数快速新闻都围绕GPU进行快速计算,但大多数CPU仍有未开发的可能性。JavaScript当前正在获得一组新的命令,这些命令为其提供了硬件辅助的并行处理。

mozilladev

在GPU成为并行计算关注的焦点之前很久,大多数CPU都获得了一组低级指令,这些指令允许在一条指令中处理多个数据项。SIMD(或单指令多数据)是最简单,最简单的并行处理机制之一。

本质上讲,将多个值打包到单个寄存器中,然后像执行单个值一样执行操作。当然,有一些开销-您必须打包和解压缩数据-但在大多数情况下,这些开销可以最小化。

SIMD指令非常适合矢量算术,可用于加快矩阵运算和媒体解码等任务。如果您的编解码器不能实时工作,则对其进行修改以利用处理器的SIMD指令可以使其实时。当然,对于令人尴尬的并行任务,例如图像处理和大量图形,通常您不能做得比GPU更好,GPU能够并行执行比SIMD硬件更多的操作。SIMD的优点是您不必将数据运送到GPU,而且更容易理解。

另外,C编译器支持SIMD,许多高性能C程序都使用它。对于JavaScript来说,这是一个特殊的问题,因为将asm.js编译器的脚本C ++当前无法处理SIMD指令。

由于这个原因和其他原因,正在开发SIMD.js,以允许JavaScript程序员使用SSE和ARM使用NEON(两种最常见的SIMD版本)访问x86上的SIMD硬件。英特尔,谷歌和Mozilla正在研究SIMD.js,Microsoft IE团队正在考虑该问题。该项目基于Google Dart SIMD规范。Firefox Nightly当前提供您可以尝试的版本。

如果您打算使用SIMD.js,则需要为通常不使用JavaScript的编程水平做好准备-这比平时更接近金属。例如,要将两个32位浮点数的两个向量相加在一起,可以使用:

var a = float32x4(1.0,2.0,3.0,4.0); var b = float32x4(5.0,6.0,7.0,8.0); var c = SIMD.float32x4.add(a,b);

请注意,您具有用于新SIMD数据类型的构造函数,并且这些操作作为新SIMD对象的方法提供。四个32位浮点数打包为向量,然后在一个操作中相加。

目前,SIMD.js支持float32x4和int32x4,并引入了两个新的类型化数组,这些类型化数组允许访问各个值,并提供与其他类型化数组的别名以转换数据。

您可以看到在Firefox中使用SIMD.js所产生的加速效果:

Nosimdfirefox

simdfirefox

由于SIMD.js是低级别的,因此假定将在其之上构建其他库来提供更高级别的视图:

“ SIMD.js将在今天加速各种要求苛刻的应用程序,包括网络上的游戏,视频和音频处理,科学模拟等。应用程序将能够直接使用SIMD.js API,库将能够使用SIMD.js公开应用程序可以使用的更高级别的接口,而Emscripten将使用流行的SIMD惯用法将C ++编译到优化的SIMD.js代码上。”

这一切都很好,它应该使asm.js在网络上变得更加重要,但是有很多人会问这是否明智。也许最好的办法就是走另一条路。如果所有浏览器都带有精心设计的字节码VM,那么事情就会简单得多。

还有一个问题是,将这样的低级功能添加到高级语言JavaScript中是否是一个好主意。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。