首页 web前端 js教程 并行 JavaScript 机

并行 JavaScript 机

Aug 24, 2024 am 11:04 AM

作者:Vladas Saulis,PE Prodata,克莱佩达,立陶宛

2024年5月18日

摘要
本文提出了一种新的编程模型,可以以简单且自动平衡的方式利用多核 CPU 系统。该模型还提出了一种更简单的编程范式,用于在大多数大规模并行计算领域(例如天气预报、核物理、搜索引擎等)开发并行任务和系统。

近年来,由于新硬件架构的进步和更好的性能,我们面临着计算理念的新转变。多核架构将在不久的将来成为主流技术。

我们可以做什么来利用这个优势?本文是关于我们可能拥有的解决方案之一。

所提出的计算模型(称为“对象流模型”)还为伯克利著名论文[1]中提出的问题提供了一些答案。以下是使用此模型可以实现的优点的简短列表:

· 简单的编程过程和进一步的维护

· 可以动态添加或删除对象处理单元 (OPU) 时的自然 OPU (CPU) 集成和迁移

· 自动负载平衡

· 任务各部分之间无需同步

· 系统级别很少或没有互锁

所有这些特性都在并行 JavaScript 机 (PJM) 中实现,本文档下面对此进行了描述。 PJM 可以被视为一个迷你操作系统,它控制多个 JavaScript 任务、多个用户和多个前端控制台。

简介
PJM (OS) 的主要目标是通过引入特殊指令(提示)来简化并行编程,这些指令以 //#pragma .

形式专门制作的注释表示。

并行 JavaScript 机器使用 NodeJS,并被实现为前端的 Web 服务器,以及真正并行执行代码的 OPU 的服务器。 OPU 也是用 NodeJS 实现的小型 JavaScript 网络客户端。它们可以根据需要有任意多个,本地或远程连接到主并行机服务器。并行处理的整体性能很大程度上取决于连接的 OPU 的数量。

所有系统部件一起工作,可以被理解为一个迷你操作系统,它启动并解析正在运行的 JavaScript 任务,将它们的块放入系统执行队列中,并在选定的块之间提供某种协作多任务处理。通过主服务器将 OPU 的 console.log 输出管道化,将计算结果打印到 Web 客户端的控制台。每个 OPU 都分配给自己的 CPU(本地或远程),并通过简单的循环调度程序进行工作(稍后将进行解释)。这是通过使用 PM2 流程管理器 Node 模块来实现的。

“尽管与旧的二进制文件和 C 程序的兼容性对行业很有价值,并且一些研究人员正在努力帮助多核产品计划取得成功,但我们一直在思考更大胆的想法。我们的目标是实现数千个处理器……”[1] 不需要在单个物理计算机上,而是在整个网络中,所有这些都由中央服务器单元协调。从系统的角度来看,所有 CPU/OPU 都通过内部网络套接字协议进行操作,该协议不区分本地和远程 CPU。服务器 (PJM) 和客户端 (OPU) — 全部用 JavaScript 编写,因此它与 C 二进制文件不兼容。

所有在 PJM 中运行的并行程序不得使用 ES6+ JavaScript 扩展(必须使用 ES5)。在这里需要指出的是,诸如 类、箭头函数、let 和 const,尤其是 async/await 之类的扩展很难并行化,需要更彻底的 JavaScript 内部研究。这就是 PJM 在 NodeJS V8.2.1 上运行的原因。所有节点模块都锁定到此版本,以获得更好的性能和概念清晰度。

PJM 是通过位于 http://parallel-js.net:8888 的 Web 控制台进行控制和运行的。它通常是这样的:

Parallel JavaScript Machine

Web 控制台是使用 ExtJS 框架编写的,并使用 express.js HTTP NodeJS 模块连接到 PJM 服务器。 Web 控制台的另一部分(称为控制台和消息)使用 WebSockets 连接。这是所有程序的输出和系统消息实时到达的地方。重要的是要知道,Web 控制台中没有执行任何真正的计算 - 所有计算都是在 PJM 服务器和 OPU 上完成的。

如果您对这个项目感兴趣,请在此处找到完整的文章。

这个项目的源代码在这里。

以上是并行 JavaScript 机的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1672
14
CakePHP 教程
1428
52
Laravel 教程
1332
25
PHP教程
1277
29
C# 教程
1257
24
Python vs. JavaScript:学习曲线和易用性 Python vs. JavaScript:学习曲线和易用性 Apr 16, 2025 am 12:12 AM

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

JavaScript和Web:核心功能和用例 JavaScript和Web:核心功能和用例 Apr 18, 2025 am 12:19 AM

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

JavaScript在行动中:现实世界中的示例和项目 JavaScript在行动中:现实世界中的示例和项目 Apr 19, 2025 am 12:13 AM

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

了解JavaScript引擎:实施详细信息 了解JavaScript引擎:实施详细信息 Apr 17, 2025 am 12:05 AM

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python vs. JavaScript:社区,图书馆和资源 Python vs. JavaScript:社区,图书馆和资源 Apr 15, 2025 am 12:16 AM

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

Python vs. JavaScript:开发环境和工具 Python vs. JavaScript:开发环境和工具 Apr 26, 2025 am 12:09 AM

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

C/C在JavaScript口译员和编译器中的作用 C/C在JavaScript口译员和编译器中的作用 Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

从网站到应用程序:JavaScript的不同应用 从网站到应用程序:JavaScript的不同应用 Apr 22, 2025 am 12:02 AM

JavaScript在网站、移动应用、桌面应用和服务器端编程中均有广泛应用。1)在网站开发中,JavaScript与HTML、CSS一起操作DOM,实现动态效果,并支持如jQuery、React等框架。2)通过ReactNative和Ionic,JavaScript用于开发跨平台移动应用。3)Electron框架使JavaScript能构建桌面应用。4)Node.js让JavaScript在服务器端运行,支持高并发请求。

See all articles