问题标签 [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 回答
2556 浏览

c# - MSBuild maxcpucount > 1 导致构建错误

我正在尝试构建大约 600 个项目,有些是 .net 2.0,有些是 3.5。我正在使用带有所有最新 Windows 更新的 Windows 2003 Enterprise Edition 32 位。

当 maxcpucount 为 1 时构建良好。如果我将其提高以尝试提高性能,则会出现参考错误。当我查看发生错误的项目引用时,它们似乎应该按顺序构建。

下面我提供了一个导致构建被破坏的错误示例。不要挂断项目名称或相对路径,因为我已经更改了它,所以我不会与我的雇主发生麻烦。

这就像当一个以上的核心正在构建解决方案时,无法正确解决相关项目引用。

我没有在解决方案文件上使用 msbuild。我使用通配符选择所有 csproj 文件,然后将它们提供给 msbuild。对于开发,我们有多种解决方案用于系统的不同组件。95% 是项目参考,唯一的二进制参考是核心实用程序库

0 投票
22 回答
8132 浏览

concurrency - 您如何利用多核?

作为来自企业 Web 开发领域的HPC领域的人,我总是很想知道“现实世界”中的开发人员如何利用并行计算。现在所有芯片都在走向多核,这一点更加重要,当一个芯片上有数千个核心而不是几个核心时,它会更加重要。

我的问题是:

  1. 这对您的软件路线图有何影响?
  2. 我对有关多核如何影响不同软件领域的真实故事特别感兴趣,因此请在您的答案中指定您所做的开发类型(例如服务器端、客户端应用程序、科学计算等)。
  3. 您如何处理现有代码以利用多核机器,您面临哪些挑战?你在使用OpenMPErlangHaskellCUDATBBUPC还是别的什么?
  4. 随着并发水平的不断提高,您打算做什么,您将如何处理成百上千个内核?
  5. 如果您的领域容易从并行计算中受益,那么解释为什么也很有趣。

最后,我把这个问题描述为一个多核问题,但请随意谈论其他类型的并行计算。如果您正在移植应用程序的一部分以使用MapReduce,或者如果大型集群上的MPI是您的范例,那么也一定要提到这一点。

更新:如果您确实回答了 #5,请提及您是否认为如果内核数(100、1000 等)超过可用内存带宽所能提供的数量(看看每个内核的带宽如何变得越来越小),情况是否会发生变化)。您仍然可以将剩余的内核用于您的应用程序吗?

0 投票
1 回答
354 浏览

multithreading - 多用户和多处理器环境对线程有用吗?

考虑到 CPU 亲和性,这样的环境对线程有用吗?或者,如果多个用户登录并产生多个内核和用户线程,这样的系统是否会出现性能下降?

0 投票
1 回答
8636 浏览

python - 无堆栈python和多核?

所以,我在玩Stackless Python ,一个问题突然出现在我的脑海中,也许这是“假设”或“常见”知识,但我在stackless 站点上的任何地方都找不到它。

Stackless Python是否利用了多核 CPU?在普通的 Python 中,GIL 一直存在,并且要(真正)使用多个内核,您需要使用多个进程,对于Stackless也是如此吗?

0 投票
2 回答
3993 浏览

.net - 多核使用、线程、线程池

我有一些关于多线程编程和多核使用的问题。

特别是我想知道操作系统和/或框架(这是.NET)如何处理大量使用的核心。

这是我关于线程的问题:

  • 当产生一个新线程时,将线程分配给特定核心的算法是什么?
    1. 循环算法类型
    2. 随机的
    3. 目前使用最少的核心
  • 如果不是当前使用最少的核心,那么确定这种类型的代码是否会使线程的典型使用相形见绌,从而使事情变得更糟?
  • 线程在其生命周期内是否从一个核心移动到另一个核心?如果是这样,这是为了处理由于某种原因被“过度使用”的内核,因此操作系统会尝试将线程转移到使用较少的内核以帮助系统?如果不是,再次,为什么不呢?

我的最后一个问题,基本上是对上述内容的重用,是关于 .NET ThreadPool 类的,它处理诸如 .BeginInvoke 之类的事情。这门课做这些事情吗?如果不是,为什么不,或者应该这样做?

有什么办法可以调整这种处理方式,在操作系统中暗示这个特定线程,当你给它分配一个内核时请多加注意,因为我知道它会使用很多 cpu。这有意义吗?或者“很多cpu”只是相对的,因此还不够好?

0 投票
8 回答
170470 浏览

c++ - 使用多核使用 g++ 编译

快速问题:允许 g++ 生成多个自身实例以便更快地编译大型项目(例如,多核 CPU 一次 4 个源文件)的编译器标志是什么?

0 投票
4 回答
6371 浏览

linux - 运行多线程应用程序的新四核处理器中的 linux 内核有多好

这里有没有人在新的四核处理器中运行多线程应用程序的 linux 线程调度程序方面有经验?如果有这样的人,您可以在这里写下您对内核管理不同线程的性能如何的经验,您是否经历过任何线程饥饿或其中一个内核的饥饿?

谢谢你。

0 投票
3 回答
3829 浏览

x86 - SMP多线程如何共享内存和中断?

我正在为我的内核做一些输入缓冲区的工作,我有一些问题。在双核机器上,我知道可以同时运行多个“进程”。我不知道操作系统和各个程序如何保护数据冲突。

关于这个话题,我想知道两件事:

(1) 中断发生在哪里?它们是否保证发生在一个核心上而不是另一个核心上,这是否可以用来确保一个核心上的实时操作不会被另一个核心上可以处理的文件 IO 中断?(我从逻辑上假设中断会发生在第一个核心上,但这总是正确的,你怎么知道?或者也许每个核心都有自己的中断设置?这不会导致每个核心都发生中断吗?核心可以同时对同一个中断做出反应,可能以不同的方式?)

(2) 双核处理器如何处理操作码内存冲突?如果一个核心正在读取内存中的地址,而另一个核心正在写入内存中的同一地址,会发生什么?是抛出异常,还是读取了值?(我假设写入会以任何一种方式工作。)如果读取了一个值,是否保证它是碰撞时的旧值或新值?

我知道理想情况下应该编写程序以避免这些并发症,但操作系统当然不能指望这一点,并且需要能够处理此类事件而不会自己窒息。

0 投票
3 回答
3166 浏览

winapi - 将逻辑处理器映射到物理处理器

在双四核GetProcessAffinityMask(或 taskman.exe 中“设置关联”的对话框)上,将报告八个逻辑处理器。如何找出哪个逻辑处理器在哪个物理处理器上?特别是:哪些逻辑处理器在同一个物理处理器上?

编辑:如果无法以编程方式执行此操作,是否有人知道法线映射是什么?是第一个处理器上的前四个,第二个处理器上的后四个,还是第一个处理器上的奇数编号和第二个处理器上的偶数编号?

0 投票
1 回答
23077 浏览

caching - 什么是预热缓存?

我正在使用一些多核模拟器,例如 GEMS 或 M5。在所有这些中,都有一个“预热缓存”的选项。这个词是什么意思?