​welcome to my blog​

为什么用module

Environment Modules可以非常方便地管理环境变量, 对于搞深度学习的人来说, 从github下载的项目可能用的是不同版本的tensorflow, 不同版本的tensorflow使用不同版本的CUDA, 问题来了, 怎样方便地切换CUDA版本? 如果机器是自己的, 那么可以随时创建软链接指向特定版本的CUDA, 但是如果多个人用同一个机器呢? 在别人不知情的情况下改动软链接可能会影响别人的实验? 那能不能多个人同时使用不同的CUDA呢? 能, 那就是用Environment Modules

解决方法

今天在服务器上安装了Environment Modules, 但是切换到我自己的账户之后shell找不到module命令, 我用的是zsh, 使用bash是可以找到module命令的, 折腾了半天, 还是官方文档有用, 只需要在~/.zshrc末尾加一句:source /usr/local/Modules/init/zsh
重新登录之后zsh就能找到module命令了

我猜是因为我的登录shell是bash, 所以登录后bash加载了/etc/profile.d中关于module的脚本, module和bash匹配了, 然后bash像往常一样自动地切换成zsh, 此时zsh就找不到module命令, 我感觉把登录shell改成zsh之后就不用在~/.zshrc末尾加source /usr/local/Modules/init/zsh了, module会自动和zsh匹配