我最近一直在编写卷积反向传播神经网络,我主要使用Java来运行程序,使用libGDX进行图形可视化。通过大量研究,我发现要大幅度提高性能和效率,我应该在显卡上而不是在CPU上进行矩阵计算。
通过在线查看资料后,我发现在显卡上进行此类计算的主要方法是通过OpenCl。经过更多的研究,我发现我在Java上支持OpenCl的主要两个选项是通过LWJGL或JOCL。
libGDX是建立在LWJGL上的,所以我的第一直觉就是看看我是否可以通过libGDX库访问内置的OpenCL支持,但是,环顾四周之后,我什么都没发现!
我的问题是,我可以通过libGDX库访问OpenCl,如果是,那该怎么办?
如果我无法访问LWJGL的OpenCl实现,我应该使用JOCL来访问GPU数学计算,还是应该在我的libGDX应用程序中添加第二个LWJGL库?
答案 0 :(得分:2)
不确定它是否在GDX中的Lwjgl2中,但我知道LibGDX Lwjgl3实现不包含它。但是Lwjgl3被分解为模块,因此您可以在Gradle项目中添加OpenCL模块。
在"core"
依赖项中,添加
compile "org.lwjgl:lwjgl-opencl:3.1.0"
我不知道的是,这个OpenCL模块是否依赖于Lwjgl3的核心。如果是这样,您可能希望切换到LibGDX Lwjgl3后端。要切换到"desktop"
依赖项中的Lwjgl3,请在3
之后添加lwjgl3
,以便:
compile "com.badlogicgames.gdx:gdx-backend-lwjgl3:$gdxVersion"
如果切换到Lwjgl3,则必须清理一些DesktopLauncher导入和类名,基本上在类名(scroll down here for instructions if you need them)中添加3后Lwjgl。
您可能必须使版本号与LibGDX版本正在使用的Lwjgl3版本保持同步。