为什么并发编程的书总是忽略数据并行?

时间:2009-12-06 00:36:59

标签: concurrency cuda parallel-processing opencl

在过去几年中,通过OpenCL和CUDA等系统向数据并行编程进行了重大转变,即使在过去六个月内发布的书籍也从未提及数据并行编程的主题。

它并不适用于所有问题,但似乎存在一个尚未解决的重大差距。

4 个答案:

答案 0 :(得分:2)

首先,我要指出并发编程不一定是并行编程的同义词。并发编程是关于从松散耦合的任务构建应用程序。例如,对话窗口可以与作为单独任务实现的每个控件进行交互。另一方面,并​​行编程明确地是将一些计算任务的解决方案扩展到多个执行硬件上,基本上总是出于某种性能原因(注意:即使是太少的RAM也是替代方案的性能原因)正在交换。

所以,我不得不问:你指的是什么书?它们是关于并发编程的(我有一些这样的,那里有很多有趣的理论),或关于并行编程?

如果他们真的是关于并行编程,我会做一些观察:

  • CUDA是一个快速发展的目标,自发布以来一直如此。今天写的一本书在它印刷之前就已经过时了。
  • OpenCL的标准是在一年前发布的。过去8个月左右出现了稳定的实施。还没有足够的时间来写一本书,更不用说修改和出版了。
  • OpenMP至少涵盖了我使用过的几个并行编程教科书。直到版本2(v3刚刚发布),它基本上都是关于数据并行编程的。

答案 1 :(得分:1)

我认为今天在学术上使用并行计算的人通常来自集群计算领域。 OpenCL和CUDA使用图形处理器,它们或多或少地无意中已经发展成通用处理器,同时开发了更先进的图形渲染算法。

然而,图形人和高性能计算人员已经相互“发现”了一段时间,并且正在进行大量研究或使用GPU进行通用计算。

答案 2 :(得分:0)

“总是”有点强烈;有资源(example)包含数据并行主题。

答案 3 :(得分:0)

Hillis的经典着作“The Connection Machine”是所有数据并行性的。这是我的最爱之一