HPC(主要基于 Java)
除了使用目标机器拥有的多个内核之外,我正在寻找某种方法来使用 GPU 的数字处理能力(也许使用 Java?)。我将致力于(目前)实施 A* 算法,但将来我希望用某种遗传算法取代它。我看过 Project Fortress 但当我在 JavaFX 中构建 GUI 时,我我不想离 JVM 太远。
当然,如果没有可行的解决方案,我将迁移到最容易实现的解决方案。
I'm looking for some way of using the number-crunching ability of a GPU (with Java perhaps?) in addition to using the multiple cores that the target machine has. I will be working on implementing (at present) the A* Algorithm but in the future I hope to replace it with a Genetic Algorithm of sorts. I've looked at Project Fortress but as I'm building my GUI in JavaFX, I'd prefer not to stray too far from a JVM.
Of course, should no feasible solution be available, I will migrate to the easiest solution to implement.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您对使用 GPU 的 HPC 感兴趣,那么也许您可以查看 jCuda。这为 CUDA 提供了 Java 绑定,以及对 CUDA FFT、CUDA BLAS 和 CUDA DPP 的访问。我还没有看到关于这个库的任何性能报告,所以我不能保证它会非常好。
除此之外,我不太确定。如果您有兴趣将此类内容作为教育练习,那么 Java 应该足够好,但如果您对 HPC 有严重需求,那么您可能会想要用 C 实现并使用 Java 本机接口来实现与它沟通。
If you're interested in HPC with GPUs then perhaps you can look jCuda. This provides Java bindings for CUDA, along with access to CUDA FFT, CUDA BLAS and CUDA DPP. I haven't seen any performance reports on this library so I can't guarantee it will be very good.
Beyond that, I'm not really sure. If you're interested in doing this type of stuff as an educational exercise then Java should be good enough, but if you have a serious need for HPC then you're probably going to want to implement in C and use the Java Native Interface to communicate with it.
莫滕·诺贝尔·乔尔根森有一个 博客文章 展示如何使用 JOGL - OpenGL 的 Java 绑定
但是,如果您想要通用计算而不是图形,那么您将需要 OpenCL,您可以从中选择 JOCL,或 < a href="http://jogamp.org/jocl/www/" rel="nofollow noreferrer">JOCL 或 JavaCL。
维基百科页面展示了如何使用 OpenCL 来计算快速傅立叶变换。
Morten Nobel Joergensen has a blog post showing how to create a Mandelbrot Set using JOGL - Java Bindings for OpenGL
However if you want generic computing, rather than graphics, then you'd be after the Java bindings for OpenCL, from which you can chose from JOCL, or JOCL or JavaCL.
Wikipedia's page shows how OpenCL can be used to compute a fast fourier transform.
Parallel Colt 可能会引起您的兴趣。
Parallel Colt might be of interest.
看看JPPF,它是一个非常好的、成熟的开源Java网格计算环境
Have a look at JPPF, it is a very nice and mature open source Java grid computing environment