问题标签 [parallel-processing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 并行化 CPU 密集型 .NET 应用程序的当前最佳选择是什么?
这是一个开放式问题。我应该考虑哪些方法?
multicore - 您今天推荐哪种并行编程模型来利用明天的众核处理器?
如果您今天从头开始编写一个新应用程序,并希望它扩展到您明天可以投入使用的所有内核,您会选择哪种并行编程模型/系统/语言/库?为什么?
我对这些轴上的答案特别感兴趣:
- 程序员生产力/易用性(凡人能成功使用吗?)
- 目标应用领域(它(不)擅长什么问题?)
- 并发风格(它是否支持任务、管道、数据并行、消息......?)
- 可维护性/面向未来(20 年后还会有人使用它吗?)
- 性能(它如何在什么样的硬件上扩展?)
我故意模糊应用程序的性质,以期获得对各种应用程序有用的良好一般答案。
multithreading - 切换到并行编码
我们都为单处理器编写代码。我想知道我们什么时候都能够在多处理器上编写代码?
我们需要什么(软件工具、逻辑、算法)来进行这种切换?
编辑:在我看来,当我们并行执行许多任务时,我们需要将这些现实生活中的解决方案(算法)转换为计算机语言。就像 OOP 编码对过程编码所做的那样。OOP 是一种比程序更真实的编码风格。所以我希望有这种解决方案。
f# - 未来 F# 是否有可能比其他 .Net 语言优化得更多?
微软是否有可能让 F# 程序在 VM 执行时或更可能在编译时检测到程序是用函数式语言构建的并自动更好地并行化它?
现在我相信没有这样的努力来尝试自动执行一个作为单线程程序构建为多线程程序的程序。
也就是说,开发人员将编写一个单线程程序。并且编译器会输出一个编译的程序,该程序是多线程的,在需要时带有互斥锁和同步。
这些优化会在任务管理器中的进程线程数中可见,还是会比这更低?
parallel-processing - 什么是最好的 MPI 实现
我必须在集群中实现 MPI 系统。如果这里有人对 MPI(MPICH/OpenMPI)有任何经验,我想知道哪个更好,以及如何在 x86_64 机器集群上提高性能。
parallel-processing - 多核的 MPI?
随着最近关于多核编程的热议,有人在探索使用MPI的可能性吗?
unit-testing - NUnit(和 MSTest)如何处理改变静态/共享变量的测试?
我有一些代码使用共享网关模式来实现控制容器的反转。我有数百个 NUnit 单元测试来练习使用这个 IOC 的代码。它们都可以工作(在我的机器上!)但我担心这些测试在负载下可能会失败。我似乎记得 NUnit(和 MSTest)尝试在多个线程上并行运行测试(这肯定会触发静态/共享网关上的竞争条件),但我找不到任何说明实际发生情况的文档。我的经验是 NUnit 似乎是按顺序运行测试的。我的问题是,NUnit(或 MSTest)是否曾经并行运行单元测试?如果有,在什么条件下?而且,我可以通过某种配置选项将其关闭吗?
sql - 在 SQL Server 2005 中生成多个 SQL 任务
我有许多存储的过程,我希望它们都在服务器上同时运行。理想情况下,所有内容都在服务器上,而不依赖与外部客户端的连接。
有哪些选项可以启动所有这些并让它们同时运行(我什至不需要等到所有流程都完成后才能完成额外的工作)?
我曾想过:
- 从客户端启动多个连接,每个连接都启动相应的 SP。
- 为每个 SP 设置作业并从 SQL Server 连接或 SP 启动作业。
- 使用 xp_cmdshell 启动与 osql 或 whetever 等效的附加运行
- SSIS - 我需要查看是否可以动态编写包以处理更多 SP,因为我不确定我的客户将获得多少访问权限
在工作和 cmdshell 的情况下,我可能会遇到来自 DBA 的权限级别问题......
SSIS 可能是一个不错的选择 - 如果我可以驱动 SP 列表。
这是一个数据仓库的情况,工作很大程度上是独立的,NOLOCK在星星上普遍使用。该系统是一个 8 路 32GB 的机器,所以如果我发现问题,我将加载它并缩小它。
我基本上有三层,第 1 层有少量进程,并且基本上取决于已经加载的所有事实/维度(有效,星星是第 0 层 - 是的,不幸的是它们都需要加载),层2 有许多依赖于第 1 层的部分或全部的进程,第 3 层有许多依赖于第 2 层的部分或全部的进程。我已经在表中有依赖关系,并且只会在最初启动所有procs 同时在特定层中,因为它们在层内是正交的。
multithreading - 您使用哪些并行编程 API?
考虑到当今多核和多处理硬件的巨大重要性,试图了解人们目前实际上是如何编写并行代码的。对我来说,主要的范式似乎是 pthreads(POSIX 线程),它在 Linux 上是原生的,在 Windows 上可用。HPC 人倾向于使用 OpenMP 或 MPI,但在 StackOverflow 上似乎没有很多。还是您依赖 Java 线程、Windows 线程 API 等而不是可移植标准?在您看来,进行并行编程的推荐方法是什么?
或者您是否在使用更奇特的东西,例如 Erlang、CUDA、RapidMind、CodePlay、Oz,甚至亲爱的老 Occam?
澄清:我正在寻找非常便携且适用于各种主机架构上的平台(例如 Linux、各种 unix)的解决方案。Windows 是一种极少的支持很好的案例。所以 C# 和 .net 在这里真的太狭窄了,CLR 是一项很酷的技术,但他们能否为 Linux 主机发布它,以便它像 JVM、Python、Erlang 或任何其他可移植语言一样普遍。
C++ 或基于 JVM:可能是 C++,因为 JVM 倾向于隐藏性能。
MPI:我同意即使是 HPC 人员也认为它是一个难以使用的工具——但对于在 128000 个处理器上运行,它是解决 map/reduce 不适用的问题的唯一可扩展解决方案。不过,消息传递非常优雅,因为它是唯一一种似乎可以很好地扩展到本地内存/AMP、共享内存/SMP、分布式运行时环境的编程风格。
一个有趣的新竞争者是MCAPI。但我认为还没有人有时间对此进行任何实践经验。
所以总的来说,情况似乎是有很多我不知道的有趣的微软项目,而 Windows API 或 pthreads 是实践中最常见的实现。
php - PHP 中使用 PECL HTTP 类的并行 HTTP 请求 [答案:HttpRequestPool 类]
HttpRequestPool类提供了一个解决方案 。非常感谢那些指出这一点的人。
可以在以下位置找到一个简短的教程:http ://www.phptutorial.info/?HttpRequestPool-construct
问题
我想在 PHP 中发出并发/并行/同时的 HTTP 请求。我想避免连续的请求:
- 一组请求需要很长时间才能完成;请求越多时间越长
- 一个请求在一组中途超时可能会导致以后的请求无法发出(如果脚本有执行时间限制)
我设法找到了使用 cURL 在 PHP 中同时发出 [原文如此] HTTP 请求的详细信息,但是如果可能的话,我想明确地使用 PHP 的HTTP 函数。
具体来说,我需要将数据同时发布到一组 URL。发布数据的 URL 不在我的控制范围内;它们是用户设置的。
我不介意是否需要等待所有请求完成才能处理响应。如果我将每个请求的超时时间设置为 30 秒并且同时发出请求,我知道我必须等待最多 30 秒(可能更多)才能完成所有请求。
我找不到有关如何实现这一点的详细信息。但是,我最近确实注意到 PHP 手册中提到了 PHP5+ 能够处理并发 HTTP 请求 - 我当时打算记下它,忘记了,再也找不到了。
单个请求示例(工作正常)
并发请求示例(不完整,清楚)
任何想法将不胜感激!
澄清1:我想坚持PECL HTTP功能:
- 他们提供了一个不错的 OOP 界面
- 它们在有问题的应用程序中被广泛使用,并且从维护的角度来看,坚持已经使用的应该是有益的
- 与使用 cURL 相比,我通常必须编写更少的代码行来使用 PECL HTTP 函数发出 HTTP 请求 - 从维护的角度来看,更少的代码行也应该是有益的
澄清 2:我意识到 PHP 的 HTTP 函数不是内置的,也许我在那里用词错误,我会更正。我不担心人们必须安装额外的东西——这不是一个要分发的应用程序,它是一个带有服务器的网络应用程序。
澄清 3:如果有人权威地声明 PECL HTTP 不能做到这一点,我会非常高兴。