——NG
这段时间因为工作需要,要用到在java中调用cuda程序,但是令人蛋疼的是网上这方面的资料几乎没有,所以只好我自己摸索。我的想法是通过java的JNI接口调用cuda,但是很明显正常情况下是不可行的。
因为cuda程序涉及一个API接口的问题,直接使用JNI调用c/c++的方法来调用cuda是不可行的。在这上我走了不少弯路。然后我就想到能否使用cuda原生的dll支持来实现JNI调用cuda(cuda原生的dll只支持c/c++)。
接下来我们实现一下,当然首先你要懂JNI和cuda。
1.首先是前期工作,编写一个简单的java主程序java1.java,如下:
public class java1 {
static
{
System.loadLibrary("cudll");
}
public native static int cuda(int i);
public static void main(String[] args)
{
java1.cuda(4);
}
}
以上java程序要实现的是对cudll.dll的调用。然后javac成java1.class,再javah成java1.h头文件以方便接下来的调用。
2.然后就是cudll.dll的制作了。
看下图,首先通过CUDAWinApp建立cuda的dll工程: