我知道以下努力(其中一些似乎与多核架构没有直接关系,但似乎更多涉及并行编程模型、多线程和并发):
- Erlang(我知道Erlang包含构造以促进并发,但我不确定它如何被利用于多核架构)
- OpenMP(似乎主要与多处理和利用集群的能力有关)
- Unified Parallel C
- Cilk
- Intel Threading Blocks(这似乎直接与多核系统相关;由英特尔提供。除了定义某些编程结构之外,它还具有一些功能,可以让编译器为多核架构优化代码)
因此,在我看来,目前面临的多核编程问题包括:
- 多核编程是需要具有显著技能的困难概念。 - 当今的编程语言中没有原生结构提供良好抽象以为多核环境编程。 - 除了英特尔的TBB库外,我没有找到其他编程语言利用多核架构进行编译的努力(例如,我不知道Java或C#编译器是否针对多核系统优化字节码,甚至不知道JIT编译器是否这样做)。
我想知道其他可能存在的问题,以及是否有正在开发的解决方案来解决这些问题。提供研究论文(等类似资料)的链接将非常有帮助。谢谢!
编辑:
如果我必须把我的问题简化为一个句子,那就是:多核编程面临哪些问题,目前有哪些研究在进行以解决这些问题?
更新:
我认为多核需要关注三个层面:
1. 语言层面:抽象并行和并发的构造/概念/框架,使程序员更容易表达。
2. 编译器层面:如果编译器知道它正在编译的体系结构,它可以优化编译后的代码以适应该体系结构。
3. 操作系统层面:操作系统优化运行进程,可能对不同的线程/进程安排在不同的核心上运行。
我在ACM和IEEE上搜索了一些论文。其中大部分讨论了并发思考的困难以及当前语言没有适当的方式来表达并发。有些人甚至声称我们现有的并发模型(线程)不是处理并发的好方法(即使在多核情况下)。我很想听听其他观点。