0

我最近一直在编写一个卷积反向传播神经网络,我主要使用 Java 来运行程序,并使用 libGDX 来进行图形可视化。经过大量研究,我发现要大幅提高性能和效率,我应该在显卡而不是 CPU 上执行矩阵计算。

在网上查阅资料后,我发现在显卡上进行此类计算的主要方法是通过 OpenCl。经过更多研究后,我发现我在 Java 上支持 OpenCl 的主要两种选择是通过 LWJGL 或 JOCL。

libGDX 是基于 LWJGL 构建的,所以我的第一反应是看看我是否可以通过 libGDX 库访问内置的 OpenCL 支持,但是,环顾四周后,我什么也没发现!

我的问题是,我可以通过 libGDX 库访问 OpenCl,如果可以,如何访问?

如果我无法访问 LWJGL 的 OpenCl 实现,我应该使用 JOCL 来访问 GPU 数学计算,还是应该在我的 libGDX 应用程序中添加第二个 LWJGL 库?

4

1 回答 1

2

不确定它是否在 GDX 的 Lwjgl2 中,但我知道 LibGDX Lwjgl3 实现不包括它。但是 Lwjgl3 被分解为模块,因此您可以在 Gradle 项目中添加 OpenCL 模块。

"core"依赖项中,添加

compile "org.lwjgl:lwjgl-opencl:3.1.0"

我不知道这个 OpenCL 模块是否对 Lwjgl3 的核心有任何依赖。如果是这样,您可能想要切换到 LibGDX Lwjgl3 后端。要切换到 Lwjgl3,请在"desktop"依赖项中添加3after lwjgl3,因此:

compile "com.badlogicgames.gdx:gdx-backend-lwjgl3:$gdxVersion"

如果切换到 Lwjgl3,则必须清理一些 DesktopLauncher 导入和类名,基本上是在类名中的 Lwjgl 之后添加 3(如果需要,请向下滚动以获取说明)。

您可能必须使版本号与 LibGDX 版本正在使用的 Lwjgl3 版本保持同步。

于 2017-02-02T14:20:56.257 回答