问题标签 [multicore]

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.

0 投票
2 回答
738 浏览

multithreading - Windows 上的多核 Haskell

我一直在阅读有关Haskell的许多教程。 但是,我无法让编译后的应用程序在windows (32 位)上的多核 (我有英特尔四核) 上运行。

我尝试了很多事情:

但没有运气。

编译后的应用程序仅在一个内核上 100% 运行。

有任何想法吗?

代码:

0 投票
11 回答
773 浏览

performance - 您是否使用过多核来提高速度?你做了什么,值得付出努力吗?

所以在发布之前我没有看正确的位置..

当您单击完整的基准测试链接,例如:http ://shootout.alioth.debian.org/u32q/benchmark.php?test=k核苷酸&lang =all 时,很明显有不少解决方案使用多核。

听到您的个人经历仍然很有趣:

您是否曾成功使用 4 或 8 个内核来实际提高单个任务的性能?

你使用了什么工具/语言?

改进有多大?

值得付出努力吗?

0 投票
4 回答
7439 浏览

asp.net - ASP.NET 默认情况下是否利用多核处理器?

或者我必须为此专门配置 IIS?我是否必须使用网络花园才能利用多核?

0 投票
2 回答
5039 浏览

windows - 有没有办法查看进程正在使用的每个核心的 CPU 使用量?

我知道在 perfmon 中,您可以看到每个内核的使用量,以及特定进程使用的总 CPU 量。但是,我似乎无法找到一种方法来查看一个进程正在使用多少 CPU,按内核划分。

是否有内置方法可以查看此信息?有没有一种程序化的方式来查看这个?(首选 C#)我是否通过提出这个问题来证明对 Windows(Vista)如何处理核心使用和上下文切换的误解?

编辑:更多澄清我想知道的内容。我的进程仅使用 30-40% 的总 CPU(在四核上)是因为它没有足够的多线程来利用更多,还是因为它太受 I/O 限制并且磁盘访问是瓶颈?

那么根本就没有办法做到这一点吗?(除了确保计算机上没有其他 CPU 活动)

0 投票
5 回答
3874 浏览

erlang - Erlang 和其他语言的多核编程有什么区别?

我阅读了 Joe Armstrong 的“Programming Erlang”,以及“n 核机器中的 n 倍速度”理论。在 Erlang 中进行多核编程的有效方法是使用大量进程(线程)。

我是一名 C++ 程序员,所以我很好奇在 C++ 中创建大量线程和在 Erlang 中创建大量进程之间的区别。我知道在 C/C++ 中处理线程并不容易。我也知道锁定/解锁会使系统变慢。但这也不是不可能的,对吧?

那么.. 为什么 Erlang 是一种多核友好的语言?仅仅是因为它易于编程吗?

我正在为 MMORPG 制作在线游戏服务器,这就是我对 Erlang 作为替代服务器语言感兴趣的原因。

(我已经读过这个问题,但我认为这不是我要找的问题。)

0 投票
7 回答
917 浏览

java - 如何在 Java 中实现多核算法?

现代计算机的内核越来越多。我们想改变我们当前的线性算法来使用这些核心。

只有在有空闲处理器的情况下,拆分任何算法以使用不同的线程才有意义。

如果有免费处理器,是否有任何好的库可以帮助并行化某些步骤?

我会举一些例子。

  • 如果只有一个处理器,那么创建多个线程是没有意义的。它会降低速度。
  • 如果在一个核心二重奏上运行 2 个进程(服务器上的请求),那么启动线程也是没有意义的。
  • 如果核心二重奏上只有一个进程,那是有道理的。

抽象算法有 4 个步骤 A、B、C 和 D。步骤 A、B 和 C 可以并行执行。步骤 D 需要来自 A、B 和 C 的结果。

编辑:我的意思是一个数学算法。无 IO,无事件等

0 投票
6 回答
1380 浏览

c++ - 可以像在 erlang 中一样在 C 中制作并发可扩展的可靠程序吗?

一个理论问题。在阅读了 Armstrongs 的“programming erlang”一书后,我想知道以下几点:学习 Erlang 需要一些时间。更别说掌握它了。它在很多方面确实有根本的不同。

所以我的问题是:是否可以编写'like erlang'或使用一些'erlang like framework',考虑到你注意不要创建带有副作用的函数,你可以像在Erlang中一样创建可扩展的可靠应用程序?也许使用相同的消息发送,大量的“迷你流程”范式。

这样做的好处是不会将您积累的所有 C/C++ 知识抛在一边。

欢迎对此提出任何想法

0 投票
9 回答
52328 浏览

multicore - 如何控制进程在哪个核心上运行?

我可以理解如何编写一个使用多个进程或线程的程序:fork() 一个新进程并使用 IPC,或者创建多个线程并使用这些类型的通信机制。

我也理解上下文切换。也就是说,只有一个 CPU,操作系统为每个进程安排时间(并且有大量的调度算法),从而我们实现了同时运行多个进程。

现在我们有了多核处理器(或多处理器计算机),我们可以让两个进程在两个独立的内核上同时运行。

我的问题是关于最后一个场景:内核如何控制进程在哪个内核上运行?哪些系统调用(在 Linux 甚至 Windows 中)在特定内核上调度进程?

我问的原因是:我正在为学校开展一个项目,我们将在其中探索最近的计算主题——我选择了多核架构。似乎有很多关于如何在这种环境中编程(如何观察死锁或竞争条件)的材料,但关于控制单个内核本身的材料却不多。我希望能够编写一些演示程序并提供一些汇编指令或 C 代码,以达到“看,我在第二个核心上运行一个无限循环,看看那个特定核心的 CPU 利用率峰值”的效果.

任何代码示例?还是教程?

编辑:为了澄清 - 许多人说这是操作系统的目的,应该让操作系统来处理这个问题。我完全同意!但是我要问(或试图感受)操作系统实际上做了什么来做到这一点。不是调度算法,而是更多“一旦选择了一个核心,必须执行哪些指令才能让该核心开始获取指令?”

0 投票
1 回答
1871 浏览

delphi - D2010 Beta:支持多核的完美方式

在我之前关于新 D2010 的预期功能的问题中,评分最高的答案之一是“多核支持”。

好吧,众所周知,Delphi 自 D2 (IIRC) 以来就支持线程编程,并且在某些领域被大量使用。更具体地说,在您看来,哪一种是在 Delphi 中支持并行编程的完美方式?(但不仅如此——我们不要把这个问题完全与德尔福联系起来)。

就我个人而言,我倾向于看到一种组合方法会起作用,具体取决于情况:线程(无论如何我们都有)、actor 模型和基于任务的方法(实际上接近于 actor 模型)。

此外,恕我直言,研究一种视觉建模工具来描述演员之间的互动会非常有趣。

也非常欢迎使用可视化调试器(可能与上述工具相同)。

一些参考资料:

你的意见会是什么?

0 投票
6 回答
472 浏览

multithreading - 同时或顺序写入——在速度方面重要吗?

同时或顺序写操作——在速度方面重要吗?

对于多核处理器,使用多线程并行化所有文件写入操作是否有意义,只是为了提高速度?当然,所有这些写操作都是独立的。