问题标签 [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.
multithreading - Windows 上的多核 Haskell
performance - 您是否使用过多核来提高速度?你做了什么,值得付出努力吗?
所以在发布之前我没有看正确的位置..
当您单击完整的基准测试链接,例如:http ://shootout.alioth.debian.org/u32q/benchmark.php?test=k核苷酸&lang =all 时,很明显有不少解决方案使用多核。
听到您的个人经历仍然很有趣:
您是否曾成功使用 4 或 8 个内核来实际提高单个任务的性能?
你使用了什么工具/语言?
改进有多大?
值得付出努力吗?
asp.net - ASP.NET 默认情况下是否利用多核处理器?
或者我必须为此专门配置 IIS?我是否必须使用网络花园才能利用多核?
windows - 有没有办法查看进程正在使用的每个核心的 CPU 使用量?
我知道在 perfmon 中,您可以看到每个内核的使用量,以及特定进程使用的总 CPU 量。但是,我似乎无法找到一种方法来查看一个进程正在使用多少 CPU,按内核划分。
是否有内置方法可以查看此信息?有没有一种程序化的方式来查看这个?(首选 C#)我是否通过提出这个问题来证明对 Windows(Vista)如何处理核心使用和上下文切换的误解?
编辑:更多澄清我想知道的内容。我的进程仅使用 30-40% 的总 CPU(在四核上)是因为它没有足够的多线程来利用更多,还是因为它太受 I/O 限制并且磁盘访问是瓶颈?
那么根本就没有办法做到这一点吗?(除了确保计算机上没有其他 CPU 活动)
erlang - Erlang 和其他语言的多核编程有什么区别?
我阅读了 Joe Armstrong 的“Programming Erlang”,以及“n 核机器中的 n 倍速度”理论。在 Erlang 中进行多核编程的有效方法是使用大量进程(线程)。
我是一名 C++ 程序员,所以我很好奇在 C++ 中创建大量线程和在 Erlang 中创建大量进程之间的区别。我知道在 C/C++ 中处理线程并不容易。我也知道锁定/解锁会使系统变慢。但这也不是不可能的,对吧?
那么.. 为什么 Erlang 是一种多核友好的语言?仅仅是因为它易于编程吗?
我正在为 MMORPG 制作在线游戏服务器,这就是我对 Erlang 作为替代服务器语言感兴趣的原因。
(我已经读过这个问题,但我认为这不是我要找的问题。)
java - 如何在 Java 中实现多核算法?
现代计算机的内核越来越多。我们想改变我们当前的线性算法来使用这些核心。
只有在有空闲处理器的情况下,拆分任何算法以使用不同的线程才有意义。
如果有免费处理器,是否有任何好的库可以帮助并行化某些步骤?
我会举一些例子。
- 如果只有一个处理器,那么创建多个线程是没有意义的。它会降低速度。
- 如果在一个核心二重奏上运行 2 个进程(服务器上的请求),那么启动线程也是没有意义的。
- 如果核心二重奏上只有一个进程,那是有道理的。
抽象算法有 4 个步骤 A、B、C 和 D。步骤 A、B 和 C 可以并行执行。步骤 D 需要来自 A、B 和 C 的结果。
编辑:我的意思是一个数学算法。无 IO,无事件等
c++ - 可以像在 erlang 中一样在 C 中制作并发可扩展的可靠程序吗?
一个理论问题。在阅读了 Armstrongs 的“programming erlang”一书后,我想知道以下几点:学习 Erlang 需要一些时间。更别说掌握它了。它在很多方面确实有根本的不同。
所以我的问题是:是否可以编写'like erlang'或使用一些'erlang like framework',考虑到你注意不要创建带有副作用的函数,你可以像在Erlang中一样创建可扩展的可靠应用程序?也许使用相同的消息发送,大量的“迷你流程”范式。
这样做的好处是不会将您积累的所有 C/C++ 知识抛在一边。
欢迎对此提出任何想法
multicore - 如何控制进程在哪个核心上运行?
我可以理解如何编写一个使用多个进程或线程的程序:fork() 一个新进程并使用 IPC,或者创建多个线程并使用这些类型的通信机制。
我也理解上下文切换。也就是说,只有一个 CPU,操作系统为每个进程安排时间(并且有大量的调度算法),从而我们实现了同时运行多个进程。
现在我们有了多核处理器(或多处理器计算机),我们可以让两个进程在两个独立的内核上同时运行。
我的问题是关于最后一个场景:内核如何控制进程在哪个内核上运行?哪些系统调用(在 Linux 甚至 Windows 中)在特定内核上调度进程?
我问的原因是:我正在为学校开展一个项目,我们将在其中探索最近的计算主题——我选择了多核架构。似乎有很多关于如何在这种环境中编程(如何观察死锁或竞争条件)的材料,但关于控制单个内核本身的材料却不多。我希望能够编写一些演示程序并提供一些汇编指令或 C 代码,以达到“看,我在第二个核心上运行一个无限循环,看看那个特定核心的 CPU 利用率峰值”的效果.
任何代码示例?还是教程?
编辑:为了澄清 - 许多人说这是操作系统的目的,应该让操作系统来处理这个问题。我完全同意!但是我要问(或试图感受)操作系统实际上做了什么来做到这一点。不是调度算法,而是更多“一旦选择了一个核心,必须执行哪些指令才能让该核心开始获取指令?”
delphi - D2010 Beta:支持多核的完美方式
在我之前关于新 D2010 的预期功能的问题中,评分最高的答案之一是“多核支持”。
好吧,众所周知,Delphi 自 D2 (IIRC) 以来就支持线程编程,并且在某些领域被大量使用。更具体地说,在您看来,哪一种是在 Delphi 中支持并行编程的完美方式?(但不仅如此——我们不要把这个问题完全与德尔福联系起来)。
就我个人而言,我倾向于看到一种组合方法会起作用,具体取决于情况:线程(无论如何我们都有)、actor 模型和基于任务的方法(实际上接近于 actor 模型)。
此外,恕我直言,研究一种视觉建模工具来描述演员之间的互动会非常有趣。
也非常欢迎使用可视化调试器(可能与上述工具相同)。
一些参考资料:
你的意见会是什么?
multithreading - 同时或顺序写入——在速度方面重要吗?
同时或顺序写操作——在速度方面重要吗?
对于多核处理器,使用多线程并行化所有文件写入操作是否有意义,只是为了提高速度?当然,所有这些写操作都是独立的。