一段时间以来,主流计算硬件已经支持SIMD指令(MMX、SSE、3D-Now等),最近我们看到AMD将480流CPU与CPU放在同一个芯片中。
像F#、Scala和Clojure这样的函数式语言也正在获得吸引力,一个共同的吸引力是这些语言中的并发编程非常容易。
是否有计划让Java或.NET CLR开始提供对并行计算硬件资源的访问,以便函数式语言能够成熟以利用硬件?
虚拟机目前似乎是高性能计算的瓶颈,单指令多路存储器和图形处理器访问被委托给第三方库和后编译器(tidepowered.net、OpenTK、ScalaCL、Brahma等)。
有没有人知道微软/甲骨文/开源社区的任何计划/路线图,使他们的虚拟机与新的硬件和编程范例保持同步?
有没有一个很好的理由来解释为什么供应商在接受上如此迟缓?
编辑:
到目前为止,为了解决反馈问题,GPU编程确实很复杂,如果做得不对,会降低性能。但是众所周知,并行是计算的未来-所以这个问题的关键是,如果应用程序和硬件之间的运行时不支持并行范例,那么硬件和编程语言接受并行范例将无济于事。为什么我们在虚拟机供应商的雷达/路线图上看不到这一点?
发布于 2011-09-06 17:56:43
你是说JavaCL和ScalaCL?它们都试图将CUDA/GPU编程迁移到javavm
发布于 2011-09-06 17:21:30
mono运行时已经包含了对一些单指令多数据指令的支持--参见http://docs.go-mono.com/index.aspx?link=N%3aMono.Simd
对于微软的CLR实现,您可以使用XNA,它允许您运行着色器等,也可以使用加速库https://research.microsoft.com/en-us/projects/accelerator/,它提供了运行GPGPU计算的接口
发布于 2011-09-07 13:36:30
Java在并行领域已经有一段时间了,首先是java.util.concurrent包,现在是fork/join框架。希望在未来,像Clojure和Scala这样的语言将提供很好的高级抽象来利用fork-join。
GPGPU编程只对非常特殊的问题提供了显着的性能提升。.Net和Java是通用编程语言。另外,谁想在Java这样的语言中进行CUDA风格的编程呢?
https://stackoverflow.com/questions/7317371
复制相似问题