我现在有一个有关算法的项目,UI与服务层都是用java写,但在Java上算法运行所消耗的时间过于漫长,我们决定将计算密集的部分(大概90%的CPU时间)移植到GPU上,使用CUDA进行计算。现在CUDA一切进展顺利,但现在的问题在于如何从java向cuda传递对象。我们考虑过JCUDA,只是JCUDA只能传递各种基本数据类型组成的数组,因此最终没有被启用。现在我们正在犹豫用什么技术,目前可选择的有JNI与CORBA,没有确定用哪一个。这是一个与效率高度相关的项目,因此java与下层的交互所需要的时间要尽可能的少,另外我们需要直接把java的对象传到底层,有没有人有这方面的经验,谢谢了
解决方案 »
- 学生成绩的Excel表格以文本文件每行表示一个学生的成绩记录
- 一段代码提示错误
- 在JSP中使用contentType="application/vnd.ms-excel输出内容时如何设定Excel的表单名称(如将Sheet1改为"test")
- 我刚装了JDK1.5 但是环境配置好象出了问题,谁能帮我解决下
- jdk安装不了?!
- 100分相似!!!十万火急!!利用socket如何与http服务器通讯???????
- jsoup 报以下异常 请高手帮忙分析
- ***连续向jtextpane中写入,发现内存占用上升很快,为什么?大家都来说说看啊!
- 寻找一种较为方便的java代码文本编辑器(比如带有语法及关键字变色功能)?
- 在uml中“依赖”与“关联”到底有什么区别?
- 关于read方法怎么样读取?
- JComboBox出现空异常
不过,我觉得,
1.从开发速度上来讲,使用现成的JCUDA要快一些。
2.Java语言是针对应用软件而生的,对于底层数据的处理以及硬件设备的操纵,能力要弱很多。
底层数据的处理,还是C/C++比较有优势,基本数据类型不丰富,可以采用结构体。
但是,Java就要将内存对象,转换成字节数组(byte[])来与硬件交互信息。
3.我还是推荐使用JCUDA的,如果非要放弃使用,那么JNI和CORBA,
推荐使用JNI,效率可能要高,但是代码量可能要大。
其实,中间还是存在Java对象向基本数据类型(byte[])转换的过程。
所以,
我建议,楼主使用JCUDA,你可以写一个TransformHelper类,
完成Java对象向基本数据类型的转换过程,或者,辅助调用JCUDA的API。