- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
现代的多核处理器是否真的在进行并行处理?
例如,以Intel的核心i7处理器为例。其中一些具有#of Cores: 4
和#of Threads: 8
(摘自Intel的规范页面)。如果我编写一个具有多个执行线程的程序(例如,用Java或C语言编写),那么它们真的是会被同时处理吗?我的老师说:“多核处理器并非总是如此”,但并没有提供太多细节。
为什么英特尔必须同时指定#of核心和#of线程?线程不只是一个描述程序相关抽象的术语,与实际硬件中的“核心”不同吗? (“每个线程都在不同的内核上运行”)。
最佳答案
是的,现代多核处理器实际上是在适当的任务上进行并行处理,并且只要软件编写正确即可。我亲自测试了具有可配置线程数的多线程软件,并观察吞吐量与线程数成正比,直到该数量等于内核数为止:在四核处理器上,一个线程以一定数量完成了一项任务时间,四个线程在相同的时间内完成了四个任务,吞吐量提高了三倍。除了内核数量之外,其他线程没有进一步增加,实际上略有减少:八个线程上的八个任务花费的时间是四个线程上四个任务花费的时间的两倍以上。仅使用四个线程并使它们各自连续处理两个任务就更快了。
但是,这可能就是您的教授所指的,仅具有多个线程并不能保证您将利用多个内核。例如,线程可能受到共享资源争用的限制,也就是说,它们都需要访问一块内存。他们还可能争用共享的I/O资源,例如磁盘访问或网络访问。在某些情况下,一次运行多个线程可能不会有所改善,并且实际上可能会降低总吞吐量。
最后,由于英特尔的“超线程”体系结构,“线程数”和“内核数”的数量有所不同,据说该体系结构允许每个内核一次运行两个线程。以我的经验,超线程在现实世界中不是很有用:例如,在上述测试中,内核是超线程的Intel内核,但是当我运行的线程数等于物理线程数时,仍会出现峰值吞吐量。内核,当我运行的线程数量等于英特尔声称的线程容量时,该内核就会掉线。我发现最好注意内核数量,而忽略英特尔的“线程数量”主张。
关于multithreading - 多线程-多核处理器真的在进行并行处理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24025123/
人们在运行TwistedWeb服务器时使用哪些技术来利用多个处理器/内核?有推荐的方法吗? 我基于twisted.web的Web服务在Amazon EC2实例上运行,该实例通常具有多个CPU核心(8、
multicore 库中是否有类似 sapply 的东西?还是我必须 unlist(mclapply(..)) 才能实现这一点? 如果它不存在:推理是什么? 提前致谢,如果这是一个愚蠢的问题,我们深表
ZeroMQ 用于接收输入参数.. def server(): rep = context.socket(zmq.REP) rep.bind('tcp://*:{}'.format(P
我有一大组标量值分布在 3D 网格上(每个顶点一个值。) 我的目标是展示: 网格中值大于阈值的所有点。 并将连接的点分组(以简化显示。) 所以我的基本解决方案是: 找到通过阈值测试的点 对于每个没有被
作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功、JAVA底层、面试、职业成长相关资料等更多精彩文章在公众号「 小牛呼噜噜 」 。 大家好,我是呼噜噜,
有没有办法让 J 使用多个核心?我认为 APL/J 的部分好处是语言结构很适合并行解决方案。 查看我的 CPU 使用率(我在 OSX 上),显然只有一个处理器在使用。 我有一个很重的函数 f 作用在一
多核处理器如何处理中断。 我知道单核处理器如何处理中断。 我也知道不同类型的中断。 我想知道多核处理器如何处理硬件、程序、cpu时序和输入/输出中断 最佳答案 这应该被视为 other answer
很长一段时间以来,我一直将 LLVM 视为我目前正在实现的语言的新后端。它似乎具有良好的性能,相当高级的生成 API,足够的低级支持来优化奇特的优化。此外,虽然我自己没有检查过,但苹果似乎已经成功地演
我最近开始研究低级OS编程。我(非常缓慢)目前正在研究两本较旧的书,即XINU和Build Your Own 32 Bit OS,以及上一个问题How to get started in operat
我正在阅读对新英特尔凌动 330 的评论,他们指出任务管理器显示 4 个内核 - 两个物理内核,另外还有两个由超线程模拟。 假设您有一个包含两个线程的程序。还假设这些是在 PC 上执行任何工作的唯一线
我不知道如何在 C++ 中进行线程化,我不仅不想知道,而且有没有一种方法可以将线程强制到不同的核心上?另外,我如何才能知道用户拥有多少个内核? 最佳答案 将线程绑定(bind)到任意 CPU 称为设置
如果需要在多核处理器机器的多个内核上并行执行,Linux 内核是否会同时执行多个上下文切换?有引用吗? 最佳答案 是的,你是对的。在 SMP 系统上,多个上下文切换同时发生。每个核心都可以独立进行上下
与进程相比,线程更不可能从多核处理器中获益,这是真的吗?换句话说,内核会决定在单核而不是多核上执行线程吗? 我说的是属于同一进程的线程。 最佳答案 我不知道(各种)Linux 调度程序如何处理这个问题
我需要一些帮助来决定在单个 Solr 实例中创建单个索引还是在单个 Solr 实例中创建多个核心,每个核心为一个索引提供服务。 我的理解是,solr 中的单个索引通常用于索引一种类型的文档。当您有不同
NGINX 或 Apache 是否受益于具有以下任一项的服务器: 多核,或者 多个处理器? 如果是,为什么? 最佳答案 使用多个 CPU/CPU 内核使服务器应用程序有机会并行处理多个客户端连接(和请
我正在为我的爱好操作系统开发 CPU 检测和一般环境检测代码。是否存在需要多次调用 CPUID 的情况?也就是说如果系统有多个核心,操作系统是否需要在每个核心上调用CPUID? NUMA 也是如此。
我有一些关于多核 CPU 或多处理器系统中使用的高速缓存存储器的问题。 (虽然与编程没有直接关系,但当一个人为多核处理器/多处理器系统编写软件时,它会产生很多影响,因此在此询问!) 在多处理器系统或多
所以,我一直在使用 opencv 开发实时跟踪系统。几天前,我不得不开始使用 directshow(这对我来说是全新的),因为我需要网络摄像头的更高分辨率。分辨率越高,CPU 使用率就越高。仅使用没有
我经常听说其他语言被提升为更适合多核/并发编程,例如Clojure、Scala、Erlang 等,但我有点困惑为什么我需要担心多核问题,Java/.NET VM 不应该自动处理吗?如果没有,背后的原因
假设 x86 多核 PC 架构... 假设有 2 个内核(能够执行 2 个单独的指令流),并且 CPU 和 RAM 之间的接口(interface)是内存总线。 调度在 2 个不同内核上的 2 条指令
我是一名优秀的程序员,十分优秀!