
# 训练过程中无法找到so文件
#### 问题现象
ModelArts训练作业运行时，日志中遇到如下报错，导致训练失败：
```
libcudart.so.9.0 cannot open shared object file no such file or directory
```
#### 原因分析
编译生成so文件的cuda版本与训练作业的cuda版本不一致。
#### 处理方法
编译环境的cuda版本与训练环境不一致，训练作业运行就会报错。例如：使用cuda版本为10的开发环境tf-1.13中编译生成的so包，在cuda版本为9.0训练环境中tf-1.12训练会报该错。
编译环境和训练环境的cuda版本不一致时，可参考如下处理方法：
1. 在业务执行前加如下命令，检查是否能找到so文件。如果已经找到so文件，执行[2]；如果没有找到，执行[3]。
   ```
   import os;
   os.system(find /usr -name *libcudart.so*);
   ```
   
2. 设置环境变量LD_LIBRARY_PATH，设置完成后，重新下发作业即可。
   例如so文件的存放路径为：/use/local/cuda/lib64，LD_LIBRARY_PATH设置如下：
   ```
   export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
   ```
   
3. 执行如下命令，查看训练环境的cuda版本，确认当前cuda版本是否支持so文件。
   ```
   os.system("cat /usr/local/cuda/version.txt")
   ```
   1. 支持。当前cuda版本无so文件，需外部导入so文件（自行在浏览器下载），再设置LD_LIBRARY_PATH，具体见[2]。
   
   2. 不支持。尝试更换引擎，重新下发作业。或者使用自定义镜像创建作业，可参考[使用自定义镜像创建作业](https://support.huaweicloud.com/docker-modelarts/docker-modelarts_0017.html)。
    
 
