hadoop通过JNI调用cuda程序
来源:互联网 发布:mysql恢复数据库 命令 编辑:程序博客网 时间:2024/06/05 11:23
一、通过JNI,将C写成的cuda编译成动态链接库
1、 写一个java类,类中包含一个native的函数,导入.so动态链接库,注意,linux中,SiftGPU其实指的是libSiftGPU.so。
2、javac编译这个类生成.class文件,我直接用eclipse编译了。
3、在项目目录下的./bin文件目录下,使用如下命令,生成C++函数的头文件
javah -jni -classpath . nfs.sil.image.sift.main.FeatureExtractSIFT_GPU
在该目录下会出现一个nfs_sil_image_sift_main_FeatureExtractSIFT_GPU.h的头文件,文件内容如下
4、实现nfs_sil_image_sift_main_FeatureExtractSIFT_GPU.cu,实现.h中的C++函数,
5、编译,生成动态链接库
先把所有的.cu文件用nvcc编译成.o文件
最后 gcc -Wall -rdynamic 'pkg-config --cflags opencv' -fopenmp -shared -L/home/OpenCV-2.4.3/lib -lopencv_core -lopencv_highgui -L/usr/local/cuda/lib -lcudart -o libSiftGPU.so $(ALL)
二、使用hadoop运行程序
注意,在需要运行的类中包含,将一些参数分析交给GenericOptionsParser做。
GenericOptionsParser parser = new GenericOptionsParser(conf, args);
String[]otherArgs = parser.getRemainingArgs();
运行命令
hadoop jar imageRetrieval.jar nfs.sil.image.sift.index.SiftHadoopImageIndexer -files libSiftGPU.so images index
-files意思是把libSiftGPU.so拷贝到工作机上。
另一个可行的办法是,手动将libSiftGPU.so拷贝到java.library.path所指向的文件夹下
咳咳,这种方法比较暴力~~
- hadoop通过JNI调用cuda程序
- 通过JNI调用cuda程序
- Java通过JNI调用CUDA程序
- Linux下,JAVA通过JNI调用CUDA程序
- Java通过JNI调用CUDA
- Java通过JNI调用CUDA矩阵乘法
- JNI小程序:Java通过JNI调用C程序
- java通过jni调用C程序
- Java通过JNI调用C++程序
- Java通过JNI调用C++程序
- Java通过JNI调用C++程序
- Java通过JNI调用C++程序
- Android Studio通过JNI调用NDK程序
- Java通过JNI调用C++程序
- Java通过JNI调用C++程序
- Java通过JNI调用C++程序
- Java通过JNI调用C++程序
- JAVA通过JNI调用C++程序实践
- ssh key登录验证的实现
- Altium Designer怎样打印出1:1的PCB
- fedora10下设置静态IP地址 (对于fedora 17同样适用) .
- 模电中常见的问题总结
- vs2012 无法启动此程序,因为计算机中丢失glut.dll
- hadoop通过JNI调用cuda程序
- 1126 看电视
- 可怜的小家伙们哪,连暑假都不得舒心 [好文,赞]
- 停止定时器
- Hadoop伪分布式安装体验
- Eclipse使用EGit插件 把本地代码提交到远程仓库
- cocos2d-x 2.2.1异步加载图片
- 监视网卡状态
- FMDatabase 的使用方法