上次我听到很多人声称 Cell 处理器已经死了,主要是由于以下原因:
- 新的playstation 3缺乏支持,因为用户无法安装linux
- GPU 处理能力的提高及其成本的下降
- 存在针对不同 GPU 而不是针对 CBE 的统一编程方法 (openCL)(今天宣布针对 Cell!)
- 现实世界中使用细胞的例子(学术界除外)
- 全球的失败感
你怎么看?如果您在两三年前开始对单元进行编程,您会继续这样做还是考虑改用 GPU?新版本的细胞要来了吗?
谢谢
我想说细胞开发不受欢迎的原因更接近于:
为 1000 个线程编写并行程序比为 10 个线程编写并行程序更容易。GPU 有 1000 多个线程,具有硬件线程调度和负载平衡。尽管当前的 GPU 主要适用于数据并行小内核,但它们拥有使此类编程变得微不足道的工具。Cell 在消费级配置中只有少数几个,大约 10 个数量级的处理器。(超级计算机中使用的 Cell 衍生产品跨界,拥有 100 多个处理器。)
恕我直言,Cell 的最大问题之一是缺少指令缓存。(我在 2005 年巴塞罗那 MICRO 会议回来的飞机上与 Cell 架构师大吵了一架。虽然他们不同意我的观点,但我从 cell 的 bigsuper 计算机用户那里听到了同样的看法。)人们可以应付固定大小的数据存储器- GPU 有同样的问题,尽管他们抱怨。但是将代码装入固定大小的指令存储器是一件痛苦的事情。添加一个 IF 语句,性能可能会一落千丈,因为您必须开始使用覆盖。控制数据结构比避免在开发周期后期添加代码来修复错误要容易得多。
GPU 最初有与单元相同的问题 - 没有缓存,I 和 D 都没有。
但是 GPU 的线程更多,数据并行性比 Cell 好得多,以至于它们吞噬了这个市场。仅将 Cell 留在控制台客户中,以及比 GPU 更复杂但不如 CPU 代码复杂的代码。挤在中间。
同时,GPU 正在增加 I$ 和 D$。因此,它们变得更容易编程。
细胞为什么会死?
1) SDK 太可怕了。我看到一些非常聪明的开发人员正在翻阅 IBM 邮件列表,试图找出这个问题或 Cell SDK 的那个问题。
2) 计算单元之间的总线开始出现扩展问题,并且永远不会达到 32 核。
3)OpenCl 迟到了 3-4 年,没有任何用处。
如果您在两三年前开始对单元进行编程,您会继续这样做还是考虑改用 GPU?
我原以为 90% 的为 Cell 处理器编程的人无法任意决定停止为它编程。您是针对一个非常具体的开发社区提出这个问题的吗?