Multithreading 什么';“是”的对立面;令人尴尬的平行;?

Multithreading 什么';“是”的对立面;令人尴尬的平行;?,multithreading,concurrency,terminology,parallel-processing,multicore,Multithreading,Concurrency,Terminology,Parallel Processing,Multicore,根据维基百科,一个“令人尴尬的并行”问题是一个几乎不需要或根本不需要努力就可以将问题分解成若干并行任务的问题。光线跟踪经常被作为一个例子引用,因为原则上,每条光线都可以并行处理 显然,有些问题更难并行化。有些甚至是不可能的。我想知道在这些更难的情况下使用了什么术语和标准示例 我可以提议用“令人烦恼的顺序”作为一个可能的名称吗?“令人愉快的顺序”“完全连续?” 科学家们对能做什么比不能做什么想得更多,这并不奇怪。特别是在这种情况下,并行化的替代方法是像平常一样做所有事情。当然可以,但是我认为这两个

根据维基百科,一个“令人尴尬的并行”问题是一个几乎不需要或根本不需要努力就可以将问题分解成若干并行任务的问题。光线跟踪经常被作为一个例子引用,因为原则上,每条光线都可以并行处理

显然,有些问题更难并行化。有些甚至是不可能的。我想知道在这些更难的情况下使用了什么术语和标准示例

我可以提议用“令人烦恼的顺序”作为一个可能的名称吗?

“令人愉快的顺序”

“完全连续?”


科学家们对能做什么比不能做什么想得更多,这并不奇怪。特别是在这种情况下,并行化的替代方法是像平常一样做所有事情。

当然可以,但是我认为这两个“名称”都不是问题。 从函数编程的角度来看,你可以说“令人烦恼的顺序”部分是算法中最小的或多或少独立的部分

而“令人尴尬的并行”如果不是真正采用并行方法,则是糟糕的编码实践


因此,如果好的编码实践总是将您的解决方案分成独立的部分,即使您当时没有利用并行性,那么我认为给这些东西起一个名字没有任何意义。

“顽固的串行”?

固有的顺序性


例:妇女人数不会缩短怀孕时间

我很难不发布这个。。。因为我知道这不会给讨论增加任何内容。。但对于所有南方公园的球迷来说


“超级串行!”

这一切都与数据依赖性有关。令人尴尬的是,并行问题的解决方案由许多独立的部分组成。与此性质相反的问题是那些具有大量数据依赖性的问题,在这些问题中几乎没有什么可以并行完成的退化依赖性

p-完全(但这还不确定)。

完全不可并行?
Pessimally parallelizable?

令人尴尬的并行的反面是,有些任务不能并行,完美并行任务所需的最短时间由该任务的纯顺序部分决定。

我最常听到的术语是“紧密耦合”,在这种情况下,为了共享中间数据,每个流程必须经常进行交互和通信。基本上,每个过程都依赖其他过程来完成计算

例如,矩阵处理通常涉及在每个数组分区的边缘共享边界值


这与令人尴尬的并行(或松散耦合)问题形成对比,在并行(或松散耦合)问题中,问题的每个部分都是完全独立的,不需要(或很少需要)IPC。考虑主/工作者并行性

自吹自擂的顺序。

我一直喜欢在快速排序中使用“悲伤顺序”作为分区步骤。

相反的是“令人不安的顺序”。

顺序过程的“标准示例”:

  • 生孩子:“崩溃计划之所以失败,是因为它们基于这样一种理论,即九名孕妇一个月可以生一个孩子。”——沃纳·冯·布劳恩(Werner von Braun)认为
  • 将pi、e、sqrt(2)和其他无理数计算到数百万位数:大多数算法都是连续的
  • 导航:要从A点到Z点,您必须首先通过一些中间点B、C、D等
  • 牛顿法:为了计算下一个更好的近似值,需要每个近似值
  • 质询-响应身份验证
  • 重点加强
  • 散列链
  • 哈什卡什

一个“令人尴尬的平行”问题的反面不止一个

完全顺序 一个相反的问题是不可并行化的问题,也就是说,通过使用多个处理器可以实现no的问题。已经发布了一些建议,但我建议另一个名称:一个完全连续的问题

示例:问题,“计算f1000000(x0)”类型的问题,计算确定

通信密集型 另一个相反的问题是需要大量并行通信的可并行化问题(一个通信密集的问题)。这样一个问题的实现只能在具有高带宽、低延迟互连的超级计算机上进行适当的扩展。这与令人尴尬的并行问题形成对比,并行问题的实现即使在互连非常差的系统(例如)上也能高效运行

通信密集型问题的显著例子:解决
ax=b
,其中
a
是一个大而密集的矩阵。事实上,该问题的一个实现用于编译排名。这是一个很好的基准,因为它强调了单个CPU的计算能力和互连质量(由于通信强度)


在更实际的情况下,使用离散时间步长(想想:天气预报、碰撞测试)在规则网格上求解偏微分方程组的任何数学模型都可以通过以下方式进行并行化。这意味着,每个CPU负责网格的一部分,在每个时间步结束时,CPU在区域边界上与“相邻”CPU交换结果。这些交流使这类问题成为通信密集型问题。

这是一个固有的顺序问题。 这在CAD软件包和某些工程分析中很常见

节点之间具有数据依赖关系的树遍历

想象一下,遍历一个图并将节点的权重相加

你就是无法将其并行化

CAD软件将零件表示为一棵树,要渲染到对象,必须遍历tr