gpt4 book ai didi

language-agnostic - 单线程/核心上的并行如何可能?

转载 作者:行者123 更新时间:2023-12-01 16:16:43 26 4
gpt4 key购买 nike

现代编程语言为用户提供了一流的并行机制和并发机制。我了解并行算法是如何编程的,并且可以很好地想象多核CPU上的两个线程如何并行运行。

然而,大多数这些平台还支持在单个线程上运行并行进程。

  • 这些进程真的并行运行吗?
  • 如何在程序集级别上在单个线程上同时执行两个不同的例程?

最佳答案

TLTR; :在单个非超线程 CPU 内核上并行(真正同时执行的意义上)是不可能的。

<小时/>

硬件(<- 编辑)并行性可以在多个级别上实现。按粒度递减排序:

  1. 多主机
  2. 多处理器
  3. 多核
  4. 多线程(“超线程”,即“HT”)(编辑:我自愿忽略矢量化计算的情况,其中多个 ALU 可以由同一核心驱动)

您的问题涉及在情况 3(如果 HT 不可用/禁用)或情况 4 中运行两个软件线程。

  • 在这两种情况下,进程实际上并不并行运行。由于在 CPU 级别执行极快的上下文切换,用户会产生同时性的印象,这往往会按顺序将物理核心(或线程)时间分配给一个或另一个软件线程

  • 在这两种情况下,这些例程并不是同时执行,而是按顺序执行

分配给这 2 个例程中每一个例程的相对优先级可以通过您赋予进程的“优先级”在各种操作系统上设置,该优先级将由操作系统的调度程序处理,进而分配 CPU 时间。

HTH。

要执行测试以更好地理解此主题,您可能需要在 google 上搜索“cpuaffinity”。这将让您在多核 CPU 的一个物理单核上运行一个双线程进程,并对每个线程所花费的时间进行计时,同时修改它们的优先级等...

关于language-agnostic - 单线程/核心上的并行如何可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10245337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com