服务器上ssh实现

写在前面:这只是我在服务器上的环境实现的,仅供参考。要根据自己系统的环境做出修改。

==github源码(https://github.com/mahyarnajibi/SSH)==

**实现参考(https://blog.csdn.net/qq_14845119/article/details/79105360)**

https://blog.csdn.net/zziahgf/article/details/72900948)

初始工作:安装cuda和cudnn还有nccl

因为服务器上装好了cuda和cudnn,我选择了cuda9.0和cudnn7.0。所以直接安装nccl

从github获取并安装

git clone https://github.com/NVIDIA/nccl.git
cd nccl
make clean && make PREFIX=$NCCL_ROOT_DIR install

$NCCL_ROOT_DIR是自己安装的路径:比如我的路径是 /home/lzm/data/nccl/install则为:

make clean && make PREFIX=/home/lzm/data/nccl/install install

等nccl安装完成

安装caffe-ssh

1、所有都在conda建立的python虚拟环境下进行如:

conda create -n caffetest(虚拟)  python=2.7(不是2.7貌似会报错) anaconda
conda activate caffetest

2、从github获取源码:

git clone --recursive https://github.com/mahyarnajibi/SSH.git

3、进入目录SSH安装需要的python模块:

cd SSH
pip install -r requirements.txt

4、建立临时环境变量env

(1)把nccl和conda环境写入env文件:

dlm-conda activate caffetest
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/home/lzm/data/caffe/caffe1.0_nccl/nccl/install/include
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/home/lzm/data/caffe/caffe1.0_nccl/nccl/install/include
export LIBRARY_PATH=$LIBRARY_PATH:/home/lzm/data/caffe/caffe1.0_nccl/nccl/install/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/lzm/data/caffe/caffe1.0_nccl/nccl/install/lib

(2)激活环境变量:

source ./env

5、配置文件将Makefile.config.example拷贝一份成配置文件:

cd caffe-ssh
cp Makefile.config.example Makefile.config

修改Makefile.config

(1)改成自己cuda的目录:​

CUDA_DIR := /usr/local/cuda
改成
CUDA_DIR := /usr/local/nvidia/cuda/9.0

(2)去掉的注释:

#OPENCV_VERSION := 3
改成
OPENCV_VERSION := 3

(3)修改环境路径

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
改为
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/

6、安装缺少模块

conda install -c conda-forge readline=6.2
conda install libgcc

7、编译

make all -j32

8、编译pycaffe生成接口

make pycaffe

9、在lib中编译运行setup.py

cd ../lib/
make

10、用scripts中的脚本下载模型

cd ..
bash scripts/download_ssh_model.sh
bash scripts/ download_imgnet_model.sh

11、运行模型演示

python demo.py

结果如下:

可能出现的问题

(1)

问题:

Unsupported gpu architecture 'compute_20'

解决方案:

https://askubuntu.com/questions/960238/nvcc-fatal-unsupported-gpu-architecture-compute-20

即去掉Makefile.config 中两行:

CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
-gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_50,code=compute_50
改为:
CUDA_ARCH := -gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_60,code=sm_60 \
-gencode arch=compute_62,code=sm_62 \
-gencode arch=compute_61,code=compute_61

(2)

问题:

awk: symbol lookup error: /home/lzm/.conda/envs/lzm2/lib/libreadline.so.6: undefined symbol: PC

解决方案:

https://github.com/conda-forge/rpy2-feedstock/issues/1

https://github.com/bioconda/bioconda-recipes/issues/5350

即 run

conda install -c conda-forge readline = 6.2

(3)

问题:

./include/caffe/util/hdf5.hpp:6:18: fatal error: hdf5.h: no such file or directory

解决方案:

https://github.com/BVLC/caffe/issues/2690

https://github.com/NVIDIA/DIGITS/issues/156

即Makefile.config 拿两行改掉:

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
改为
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/

(4)

问题:

./include/caffe/util/nccl.hpp:5:18: fatal error: nccl.h: No such file or directory

解决方案:

新建文件为env

将服务器已经安装的nccl路径配置到env:

export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/home/lzm/data/caffe/caffe1.0_nccl/nccl/install/include
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/home/lzm/data/caffe/caffe1.0_nccl/nccl/install/include
export LIBRARY_PATH=$LIBRARY_PATH:/home/lzm/data/caffe/caffe1.0_nccl/nccl/install/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/lzm/data/caffe/caffe1.0_nccl/nccl/install/lib

每次要用的时候都激活环境:

source  ./env

(5)

问题:

.build_release/lib/libcaffe.so: undefined reference to `cv::imdecode

解决方案:https://github.com/BVLC/caffe/issues/4621

把Makefile.config 中 OPENCV_VERSION = 3的注释去掉即可

(6)

问题:

/caffe/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by caffe-ssh/python/caffe/_caffe.so)

解决方案:https://github.com/BVLC/caffe/issues/4953

conda install libgcc

PS:以上问题也是自己经过很久的搜索排查得出来的,不要怕麻烦,要善于搜索引擎,一切水到渠成

在服务器上实现SSH(Single Stage Headless)的更多相关文章

  1. Windows 上的 SSH?使用 PowerShell Remoting 远程管理 Windows 服务器

    作者:陈计节 个人博客:https://blog.jijiechen.com/post/powershell-remoting/ 在 Linux/Unix 世界里 SSH 是个好东西,SSH 是 Se ...

  2. 在windows上通过ssh远程链接linux服务器[转]

    本文分别转自 [http://jingyan.baidu.com/article/6d704a130de40e28db51cab5.html] [http://www.cnblogs.com/mliu ...

  3. 测试必备技能系列4:如何用SSH向linux服务器上传下载文件

    通过ssh方式,向远程服务器上传文件 非常方便 直接看老徐之前的文章http://www.51testing.com/?uid-497177-action-viewspace-itemid-37054 ...

  4. Ubuntu服务器上SSH Server 的安装和设置

    网上有很多介绍在Ubuntu下开启SSH服务的文章,但大多数介绍的方法测试后都不太理想,均不能实现远程登录到Ubuntu上,最后分析原因是都没有真正开启ssh-server服务.最终成功的方法如下: ...

  5. 配置SSH隧道访问Ubuntu服务器上的MongoDB

    为了数据安全,在MongoDB的配置文件里,一般会把默认的27017端口port改为自定义的端口号,然后把允许访问的IP设为127.0.0.1(即主机本身).但是这样就会在开发的过程查看数据时带来麻烦 ...

  6. 已经在Git Server服务器上导入了SSH公钥,可用TortoiseGit同步代码时,还是提示输入密码?

    GitHub虽好,但毕竟在国内访问不是很稳定,速度也不快,而且推送到上面的源码等资料必须公开,除非你给他交了保护费:所以有条件的话,建议大家搭建自己的Git Server.本地和局域网服务器都好,不信 ...

  7. 服务器上的 Git - 生成 SSH 公钥

    http://git-scm.com/book/zh/ch4-3.html 生成 SSH 公钥 如前所述,许多 Git 服务器都使用 SSH 公钥进行认证. 为了向 Git 服务器提供 SSH 公钥, ...

  8. Mac上使用ssh连接服务器title显示服务器的ip

    Mac上使用ssh连接服务器title显示服务器的ip 使用Mac开发时,管理的服务器过多时,会搞混乱.可能有时啪啪啪一顿操作,最后发现操作错了机器. 解决方案 在远程服务器上,编辑vim /etc/ ...

  9. 在linux上使用ssh登录服务器,Linux权限

    本文是作者原创,版权归作者所有.若要转载,请注明出处 ssh为Secure Shell(安全外壳协议)的缩写. 很多ftp.pop和telnet在本质上都是不安全的. 我们使用的Xshell6就是基于 ...

随机推荐

  1. Linux-ftp服务搭建

    云服务器ESC 部署vsftpd服务 记一次ftp服务搭建的采坑过程,这个坑一直卡了很久时间,都给忘记了.最近由于公司项目需要部署FTP,经过各种采坑,终于把这个坑给填上了.废话不多说,开干 环境说明 ...

  2. 【学习笔记】TensorFlow

    1. tf.Graph().as_default() 的作用 首先看官网上的解释: 再看博主 Joanna-In-Hdu&Hust 对此比较通俗易懂的解释(https://www.cnblog ...

  3. CF 441E Valera and Number

    CF 441E Description 一共执行\(k\)次,每次有\(p\%\)把\(x * 2\),有\((100 - p)\%\)把\(x + 1\).问二进制下\(x\)末尾期望\(0\)的个 ...

  4. js 里面的各种类型转换

    1:Object 对象在转换为 number 类型时,首先会调用 valueOf 方法,然后再调用 toString 方法,否则会抛出异常. 对象在转换为 string 类型时,首先会调用 toStr ...

  5. Linux uniq 命令

    Linux uniq 命令  Linux 命令大全 Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用. uniq 可检查文本文件中重复出现的行列. 语法 ...

  6. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)

    python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 impor ...

  7. blackbox_exporter介绍

    Blackbox Exporter是Prometheus社区提供的官方黑盒监控解决方案,其允许用户通过:HTTP.HTTPS.DNS.TCP以及ICMP的方式对网络进行探测. 1.安装部署 cd /u ...

  8. 常用Hadoop命令(bin)

    **** bin 是二进制文件的意思,sbin....据说是superbin(管理员的bin) HDFS命令 某个文件的blocks信息 hadoop fsck /user/xx -files -bl ...

  9. Java IO系列之一:IO

    1. 概述 Java IO一般包含两个部分: 1.java.io包中堵塞型IO: 2.java.nio包中的非堵塞型IO,通常称为New IO. java.io包下,分为四大块近80个类: 1.基于字 ...

  10. 目前的.NET 主流的后端ORM框架

    转自:https://www.cnblogs.com/yeminglong/p/9518438.html  推荐一些常用的asp.net ORM框架 SqlSugar (国内) Dos.ORM (国内 ...