module load 到底是做什么的?它是不是基本上不需要遍历目录,而是
我曾见过人们这么做module load gcc/versionNumber
等等。
答案1
我假设您正在登录一些大学计算集群。在我的大学,我们有一个系统,它使用模块命令来加载您所描述的不同程序。
基本上,module 命令会修改您的环境,以便设置路径和其他变量,以便您可以使用 gcc、matlab 或 mathematica 等程序。要查看某些更改,请运行env
以查看您的环境变量,然后运行module load matlab
或某个其他可用包,然后env
再次运行以查看更新的变量。
我不太清楚细节,但你可以尝试
module help
答案2
提供的名称非常通用的项目module load
是Tcl基于“环境模块”项目:http://modules.sourceforge.net/至少源代码已经移至 GitHubhttps://github.com/cea-hpc/modules在官员的领导下癌胚抗原账户,这是一个受人尊敬的法国原子能研究组织,所以这是一个好兆头。
该项目基本上存在以允许集群系统中的用户无需 sudo 即可“安装”特定版本的软件。
它的软件包通过修改环境变量(例如PATH
和)来工作LD_LIBRARY_PATH
,这些变量被设置为指向您要使用的软件的预编译版本,然后通过某些挂载方式将这些版本提供给所有节点,例如NFS。
环境模块系统在依赖于不允许用户使用 sudo 来控制其资源使用和安全性的集群系统中很有用。
例如平台 LSF它依赖 Linuxsched_setaffinity
来控制 CPU 使用率:https://stackoverflow.com/questions/1006289/how-to-find-out-the-number-of-cpus-using-python/55423170#55423170
此类集群系统的更现代替代方案是 Docker 等容器,它允许用户在自己相对独立的虚拟化系统内使用 sudo。这意味着用户可以更轻松地从 Web 安装所需的内容,而在模块系统中,您通常必须要求组织内部管理员逐一为您打包内容,这更昂贵。
但请注意,人们普遍认为 Docker 并不是一种适合运行完全不受信任的代码的防范机制:https://security.stackexchange.com/questions/107850/docker-as-a-sandbox-for-untrusted-code因此您必须确定信息的敏感度,以及您对软件提供商的信任程度。但至少,将这些信息列入白名单的管理员只需将源/项目列入白名单,而无需将软件本身列入白名单。
由于虚拟化程度较低,模块设置可能会更快,但我没有基准测试。像往常一样,除非您经验丰富并且知道会存在瓶颈,否则我会从最容易实现的解决方案(Docker)开始,然后如果它看起来比应该的慢,再进行比较运行。