1. graphblas库中封装了并行化操作,在代码中#pragma一行设置线程数无效,可以采用设置环境变量的方法设置线程数,具体方法就是在命令行输入如下代码
export OMP_NUM_THREADS=48
即线程数设置为最多48 (graphblas默认最多线程数为128)
要查看环境变量可以使用如下方法:
查看所有环境变量:
env
搜索具体某个环境变量:
echo $OMP_NUM_THREADS
注意:$后不可加空格
2.error while loading shared libraries: libxxx.so通用解决方法
这里的原因是运行时没找到相应的lib文件,但大多数时候并不是因为没有这个文件,而是没有配置好环境变量
首先看一下提示,对缺失的库文件隶属于什么软件有个大概的感觉,比如上面的 libcudnn.so.7,从名字就能判断与CUDA,cuDNN相关,不认识的话就百度一下,搞清楚这个库要是有的话大概是在哪,然后转到相应的lib目录下看看,如果是真的不存在这个库文件,那就是安装出了问题,重新安装一下。但是大多数情况都是目录存在这个文件,只是系统没找到他的路径,那我们要做的就是把路径添加进来
方法1:在终端用export命令,但是退出终端就失效了,例如
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xxxx/TensorRT-7.0.0.11/lib
方法2:修改~/.bashrc或~/.bash_profile或/etc/profile
区别是前两个只对当前用户生效,/etc/profile对所有用户起效
修改~/.bashrc的例子
sudo gedit ~/.bashrc
# 添加一句
export LD_LIBRARY_PATH=/xxxx/TensorRT-7.0.0.11/lib:$LD_LIBRARY_PATH
# 保存退出
source ~/.bashrc
修改/etc/profile的例子
sudo gedit /etc/profile
# 在文件末尾添加
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}} # PATH是可执行文件路径
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64{LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# 保存退出
source /etc/profile
方法3:/etc/ld.so.conf.d/路径下创建任意一个.conf文件,把lib文件的路径写在里面,比如
sudo gedit /etc/ld.so.conf.d/tensorrt.conf
# 写入
/xxxx/TensorRT-7.0.0.11/lib
/usr/local/cuda/lib64
# 保存退出
# 更新缓存
sudo ldconfig
个人觉得方法3最好用,方便管理和修改。但有的教程说ldconfig使用后系统出问题了,我还没遇到过。
还有一种情况是找不到.h文件,我们需要将include文件夹的路径添加到系统搜索路径中
sudo gedit /etc/profile
# 添加以下内容
export C_INCLUDE_PATH=path_name:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=path_name:$CPLUS_INCLUDE_PATH
# 保存退出
# 使改动生效
source /etc/profile
# 验证是否成功,成功会输出刚才添加的路径
echo | gcc -x c -v -E -
echo | gcc -x c++ -v -E -
参考链接:(38条消息) error while loading shared libraries: libxxx.so通用解决方法_czafrost的博客-优快云博客