一 Light Head RCNN编译问题
根据https://github.com/zengarden/light_head_rcnn进行编译的过程中,在lib下运行bash make.sh,会报两个相似的错误,一个是psalign_pooling,一个是psroi_pooling。错误如下:
/home/tf/anaconda3/lib/python3.6/site-packages/tensorflow/include/tensorflow/core/util/cuda_device_functions.h:32:31: fatal error: cuda/include/cuda.h: 没有那个文件或目录
/home/tf/anaconda3/lib/python3.6/site-packages/tensorflow/include/tensorflow/core/util/cuda_device_functions.h:32:31: fatal error: cuda/include/cuda.h: 没有那个文件或目录
打开编译文件:/home/tf/light_head_rcnn/lib/lib_kernel/lib_psalign_pooling/make.sh
内容如下:
运行第一行括号里面的内容,可以输出include的路径:输出路径如下:
/home/tf/anaconda3/lib/python3.6/site-packages/tensorflow/include
它报的错误在cuda_device_functions.h里面32行#include “cuda/include/cuda.h”,上一行的路径里面没有cuda.h。cuda.h是在/usr/local/cuda-9.0/include/cuda.h这儿的。问题在这儿。
解决
由于我是两个用户下的cuda版本不一样,usr/local/cuda链接的是cuda8,cuda9是在bashrc里面添加变量来实现的。
1:首先将第三行变为/usr/local/cuda-9.0。编译之后和原来一样
2:在nvcc里面添加路径
添加之后,编译,报的错误会不一样,查看编译信息,发现有的调用cuda8的,有调用cuda9的。
3:将usr/local/cuda链接到cuda9,再进行编译,编译成功
sudo ln -s cuda-9.0 cuda9#建立软链接命令
sudo mv cuda cuda8#重命名命令
等编译完成后,再换回原来的,保证不会影响另一个用户
二
1:train的时候报:No module named ‘setproctitle’
pip install setproctitle