1. 释放GPU内存
现象
:ctrl+z
中断程序运行后,发现GPU内存没有释放(用$ nvidia-smi命令查看)
解决办法
:kill 进程,释放内存
$ sudo fuser -v /dev/nvidia* #查找占用GPU资源的PID
查找到PID号后,利用以下命令释放内存:
$ kill -9 11747 # 11747 is the PID number
再次执行 nvidia-smi 查看GPU使用情况。
2. 挂载远程目录到本地
背景
:不喜欢Linux下vim编辑代码的方式,又不想来回的将本地代码拷贝到服务器
解决办法
:将服务器目录挂载到本地,用本地编辑器编辑代码。
以Mac为例:
$ brew install sshfs
brew是Mac下的套件管理工具, 请参考Homebrew进行安装。
安装sshfs过程中可能会报错:
sshfs: OsxfuseRequirement unsatisfied!
You can install with Homebrew-Cask:
brew cask install osxfuse
You can download from:
https://osxfuse.github.io/
Error: An unsatisfied requirement failed this build.
按照提示,执行以下命令:
$ brew cask install osxfuse
安装成功后再次执行brew install sshfs
命令。然后用sshfs挂载远程目录到本地:
$ sshfs -C -o reconnect <user>@<host>:<remote_dir> <local_dir>
例如,我的远程服务器是zhangsan@gpu-2,要挂载的服务器文件路径是 /home/zhangsan/tensorflow/,放到本地的路径是/Users/zhangsan/tensorflow/。则上面完整的命令就是:
$ sshfs -C -o reconnect zhangsan@gpu-2:/home/zhangsan/tensorflow/ /Users/zhangsan/tensorflow/
执行过程中系统会要求进入系统管理的安全设置里面,按照提示操作,并输入远程服务器登陆密码即可。
随后在本地路径会看到如下图标,双击打开进入就是远程文件。我们对这个文件的所有操作都等同于在服务器中操作。
每次重启电脑后要重新mount,如果觉得不方便,可以利用
alias
给这个命令设置别名。
$ alias sshfs1='sshfs -C -o reconnect zhangsan@gpu-2:/home/zhangsan/tensorflow/ /Users/zhangsan/tensorflow/'
$ source .bash_profile
这样,每次执行sshfs1
就相当于上面一长串的命令了。注意:等号两边没有空格
这种修改方式只对当前终端窗口有效,再打开一个终端窗口或者重启系统就不起作用了。如果想永久使用别名,需要修改/etc/bashrc文件
$ cd /etc/
$ vim bashrc
将alias别名命令添加到最后,然后:wq!
退出。
3. nohup print中文出现乱码
export PYTHONIOENCODING=gbk
网友评论