【发布时间】:2014-03-09 22:14:35
【问题描述】:
我们有一个原生的c/asm 应用程序,它利用 GPU(OpenCL) 以特定的方法处理大量的encrypt/decrypt 数据,它运行完美,没问题。 JEE正在开发一部分项目(web和distribution),我们只需要调用native application/library即可。
我们尝试使用Process 类将其称为分离的外部进程。问题是我们无法控制应用程序(事件、处理程序、线程等......)。我们还尝试将 C 代码转换为 Java 代码,但性能下降了。除了将本机代码作为进程运行之外,我正在考虑 JNA 和 JNI,但有一些问题。
问题:
- 为了更好(更快)的读/写解决方案,是否可以在 JNI 和 JNA 中通过直接(非托管)内存 [Java(
ByteBuffer#allocateDirect())] 交换数据? - 是否可以通过本机代码管理和处理进程,并通过Java代码(OpenCL lib)访问GPU(共享)内存?
- 性能怎么样? JNA 比 JNI 快吗?
我们在 Redhat Linux6 x64 上有两个 AMD W7000 集群设备。
【问题讨论】:
标签: java c concurrency java-native-interface jna