为什么关于并发编程的书籍总是忽略数据并行?[关闭]
-
13-09-2019 - |
题
在过去的几年里,通过 OpenCL 和 CUDA 等系统向数据并行编程发生了重大转变,但即使在过去六个月内出版的书籍也从未提及数据并行编程的主题。
它并不适合所有问题,但似乎这里存在一个尚未解决的重大差距。
解决方案
首先,我要指出并发编程不一定是并行编程的同义词。并发编程是关于从松散耦合的任务构建应用程序。例如,对话窗口可以与作为单独任务实现的每个控件进行交互。另一方面,并行编程明确是将某些计算任务的解决方案分布在多个执行硬件上,本质上总是出于某种性能原因(注意:当替代方案是交换时,即使 RAM 太少也是一个性能原因。
所以,我必须反问:你指的是哪些书?它们是关于并发编程(我有一些这样的,那里有很多有趣的理论),还是关于并行编程?
如果它们真的是关于并行编程,我会提出一些观察:
- CUDA 是一个快速变化的目标,自发布以来一直如此。今天写的一本关于它的书在付印时就已经过时了一半。
- OpenCL 的标准发布不到一年。在过去 8 个月左右的时间里出现了稳定的实现。根本没有足够的时间来写一本书,更不用说修改和出版了。
- 至少我使用过的几本并行编程教科书都介绍了 OpenMP。直到版本 2(v3 刚刚发布)为止,它本质上都是关于数据并行编程的。
其他提示
我认为那些与并行计算学术今天的工作通常是从集群计算字段来。 OpenCL和CUDA使用图形处理器,其或多或少无意中已经演变成与更先进的图形渲染算法的开发沿通用处理器。
然而,图形人民和高性能计算的人已经有一段时间了“发现”对方现在,很多或研究正在做使用到GPU的通用计算。
“总是”是有点强;有资源那里(示例),其包括数据并行的主题。
在经典的著作“连线机”,由希尔利斯是所有数据的并行性。这是我的最爱之一
不隶属于 StackOverflow