我在一个基于slurm的HPC集群中工作,我已经这样做了5年。我们加载和卸载分析所需的模块,其中包括gcc等编译器。直到两天前,这对我来说都是无缝工作的。在过去的两天里,每次我尝试加载任何模块时,都会收到这个错误:
Couldn't set USIF specific variable "GLIBC" in modulefile - please contact
system administration! (Refer to UMEA register_USIF.sh utility.)互联网没有提供任何帮助,因为似乎没有任何关于这个问题的问题已经得到了解决。系统管理员目前没有回复我的邮件,因此我的工作完全停止了。
我曾尝试从另一台计算机和另一个帐户挂载/卸载模块,但运行正常,因此问题与我的帐户有关。
在座的任何人以前有过这个问题的经验吗?如果是这样的话,可能是什么导致的?我甚至不知道从哪里开始寻找,或者是什么导致了这一点,因为我们没有安装我们自己的编译器。
编辑#1:
不管它是否值得(不确定),我的$LD_LIBRARY_PATH如下所示:
LD_LIBRARY_PATH=:/cm/shared/apps/slurm/current/lib:/cm/shared/apps/slurm/current/lib/slurm一开始我对那个:有点怀疑。是否缺少第一个组件?我还没有接触过这个变量。
编辑#2:
经过其他一些挖掘,并将我的环境与一个同事的环境进行比较,我发现我的env中缺少以下三个变量
UMEA_HOME=/opt/sw/UMEA/current
UMEA_INCLUDE=/opt/sw/UMEA/current/include
UMEA_CONFIG=/opt/sw/UMEA/current/config我还发现$CPATH是以$LD_LIBRARY_PATH这样的:开头的,而他的$CPATH并非如此:
CPATH=:/cm/shared/apps/slurm/current/include我试着export ...他们,但它没有帮助。然而,这让我认为还有一个更深层次的问题。
编辑#3:
按照下面注释中的要求,我已经执行了module show gcc/5.3来查看实际的模块文件。内容如下:
#%Module######################################################################
##
source $env(UMEA_INCLUDE)/vsc_include.tcl
source $env(UMEA_INCLUDE)/common_include.tcl
source $env(UMEA_INCLUDE)/prereq_include.tcl
set verbosity 0
set_versions
set base_path [ load_unload ]
set_paths $base_path $module_name
set_version_number 2
setenv CC gcc
setenv CXX g++
setenv FC gfortran
setenv F77 gfortran
setenv F90 f95
setenv GDB gdb
setenv VSC_COMPILER_NAME ${module_name}
setenv VSC_COMPILER_VERSION ${module_version}发布于 2020-09-30 17:01:48
我们和HPC集群的sysadmin一起解决了这个问题。这真的是一件愚蠢的事情,我把答案贴出来,这样其他有同样问题的人就可以直接知道去哪里寻找,而不会损失几天的试验和错误。
问题源于$PATH。虽然在某些情况下,您可能希望通过执行PATH=/my/extra/path/directory:${PATH}来更新$PATH变量,但在这种情况下,我必须将多余的路径放在末尾,就像在PATH=${PATH}:/my/extra/path/directory中一样。
直到两天前,这还不是一个问题,五年来,它一直运行良好。也许他们已经改变了系统管理员端的某些东西,以至于在我的$PATH中找不到需要的可执行文件。
我检查过了,我是我的同事中唯一一个在.bashrc中修改了$PATH的人。这就解释了为什么只有我有这个问题。
无论如何,如果你正在阅读这篇文章,并且你也遇到了同样的问题,你知道去哪里看。
https://stackoverflow.com/questions/64116528
复制相似问题