0

我想为未来的硬件练习编程代码。这些是什么?想到的两个主要事物是 64 位和多核。我还注意到缓存很重要,GPU 有自己的技术,但现在我对任何图形编程都不感兴趣。

我还应该知道什么?

-edit- 我知道现在有很多这样的,但很快所有的 cpu 都将是多核的,线程将变得更加重要。我考虑了字节序(大字节序与小字节序),但发现这并不重要,并且已经有一个大字节序 CPU 可供测试。

4

7 回答 7

6

如果您想深入了解完全支持 64 位的“主流”操作系统,我建议您开始针对 Mac OS X“Snow Leopard”(10.6 的代号)测试版进行编码。其中一项重大改进是 Grand Central,它是开发人员为多核系统编写代码的“设施”。Grand Central 不仅应该在核心之间分配工作负载,还应该将工作负载分配给 GPU。

同样重要的是智能设备的爆炸式增长,如 iPhone、Android 等。我坚信一些即将到来的所谓“上网本”将依赖于 Android 和 iPhone OS 等操作系统,因此知道如何针对它们进行编码SDK,并且知道如何为移动设备优化代码非常重要(例如优化性能图形或其他,电池使用)。

于 2009-05-29T20:17:46.677 回答
6

我对未来的建议:)

或者你可以专注于光线追踪。

于 2009-05-29T20:19:10.093 回答
3

我无法预测未来,但要研究的一个方面是类似于 PS3 中使用的CELL 处理器,其中没有许多相同的通用内核,只有一个(虽然能够对称多线程)加上许多内核更具体的目的。

在一个简单的分析中,Cell 处理器可以分为四个组件:外部输入和输出结构、称为电源处理元件 (PPE) 的主处理器(一个双向同步多线程 Power ISA v.2.03 兼容内核)、八个完全- 称为协同处理元件或 SPE 的功能性协处理器,以及连接 PPE、输入/输出元件和 SPE 的专用高带宽循环数据总线,称为元件互连总线或 EIB。

CUDAOpenCL的相似之处在于您将通用代码和高性能计算分成单独的部分,这些部分可以在不同的硬件和语言/api 上运行。

于 2009-05-29T20:45:24.440 回答
2

64 位和多核是现在而不是未来。

关于未来:量子计算或类似的东西?

于 2009-05-29T20:16:28.770 回答
2

学习OpenCL怎么样?它是一种基于 C 的大规模并行处理语言。它类似于 nVidia 的CUDA,但与供应商无关。目前还没有主要的实现,但预计很快就会看到一些。

至于64位,不用太担心。除非您正在做非常低级的东西(内核),否则编程不会有任何不同。Java 和 .NET 等更高级别的框架允许您在 32 位和 64 位机器上运行代码。甚至 C/C++ 也允许您这样做(但不是那么透明)。

于 2009-05-29T20:40:05.183 回答
1

我同意 Oli 的回答 (+1) 并补充说,除了 64 位环境之外,您还可以查看多核环境。该行业正在接近原始速度改进周期的结束。但是我们看到越来越多的多核 CPU。所以并行或并发编程——这很难——很快就变得非常需要。

你怎么能为此做好准备和实践呢?我一直在问自己同样的问题。因此,在我看来,MLHaskellLISPArcScheme等函数式语言是一个很好的起点,因为真正的函数式语言通常没有副作用,因此非常“可并行化”。 Erlang是另一种有趣的语言。

我发现的其他有趣的发展包括

  • 研究操作系统
  • 事务性内存和软件隔离进程
  • 许多关于并发的软件工程播客剧集。(这是第一个。)
  • 这篇来自 ACM Queue 关于“真实世界并发”的文章
于 2009-05-29T20:38:50.677 回答
0

当然这个问题很难回答,因为没有人知道未来的硬件会是什么样子(至少从长远来看),但是多线程/并行编程很重要,而且在未来几年肯定会更加重要。

我还建议使用像 CUDA/Stream 这样的 GPU 计算,但这可能是一个问题,因为这很可能会在未来几年发生很大变化。

于 2009-05-29T20:17:07.210 回答