hpc help manual — 常见问题解答

1.登陆问题

我已经登录进去 VPN,但是我却不能登录到 TH-1A 系统

请按照用户使用手册逐步操作,核实 Hostname 是否填写正确。也可通过如下链接https://pan.baidu.com/s/1nvAxnBV下载操作过程视频,按视频讲解再次尝试登陆。

登陆 VPN 提示“本地用户有效期已经过期”

是您的 VPN 已经到期,请联系与您联系的相关工程师,申请开通VPN。

VPN 登录报错:HTTP/1.1 401 无权访问!返回登录页面

请用户依据用户手册对浏览器进行相关设置,如果每次都提示无法访问可能是系统安装的杀毒软件或者安全软件造成的,需调整软件的安全策略。

2.编译问题

在 TH-1A 系统上,使用 mpf90 编译并行程序,提示说 command not found

TH-1A 系统上使用的 mpif90 由于有不同版本的 mpi,所以没有设置mpif90 的环境变量,用户可以查看手册“编译环境”章节设置环境变量即可。

我需要使用高版本的 python,可以我输入 python 后,系统显示的是 Python 2.6

我们在 TH-1A 系统的共享目录 /vol-th/software/ 下面部署了python2.7版本,您可以通过设置环境变量来使用高版本的 python。

在使用 python 的 numpy 时提示无法找到 ImportError: No module named Numpy

python 的常用库安装在 /usr/lib64/python2.6 下,所以请确保使用 /usr/bin下的 python,验证方式如下:

>which python /usr/bin/python
>python
Python 2.6.6 (r266:84292, Feb 25 2014, 09:00:08)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
>>>import numpy

常见的 undefined reference to`问题解决办法

  • 目标文件缺失

    原因:当进行可执行程序链接时,链接命令中找不到某个函数所在源代码的目标文件 ***.o,出现 undefined reference to *** 错误。

    解决办法:找到需要的目标文件 ***.o ,然后将其添加到链接命令中,解决问题。

  • 库文件缺失

    原因:当进行可执行程序链接时,链接命令中找不到某个库函数所在的库文件,出现 undefined reference to *** 错误。

    解决办法:找到需要的库文件,然后将其绝对路径使用-L 和-l 添加到链接命令中,解决问题。

  • 多个库文件连接顺序

    原因:当进行可执行程序链接时,所需目标文件和库文件均齐全,但由于链接顺序问题,出现库文件依赖报错,从而同样会出现 undefined reference to *** 错误。

    解决办法:在链接命令中给出所依赖的库时,需要注意库之间的依赖顺序,依赖其他库的库一定要放到被依赖库的前面,避免 undefined reference 的错误,完成编译链接。

  • C++代码链接 C 库文件

    原因:若库文件或目标文件由 c 代码生成的,则在c++代码中链接目标函数时,也会碰到 undefined reference 的问题。

    解决办法:由于 c++代码调用 c 语言库的函数,链接目标文件时候找不到,出现 undefined reference to *** 错误。只需在调用 C 语言库函数的源码文件中,把与 c 语言库相关的头文件包含添加一个 extern “C”的声明即可。

在链接 MKL 库时,报错undefined reference to dgemm_ ***

原因为 MKL 库没有被有效链接。下面为一个范例脚本:

>cat demo.sh 

#!/bin/bash
export MKLLIB=/vol-th/intel_composer_xe_2013.0.079_lib
mpif90 -c ./Main/exe.f90
mpif90 -o exe exe.o \
-L${MKLLIB} -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread \
-Wl,-rpath,${MKLLIB},-L${MKLLIB} -lmkl_intel_lp64 -lmkl_sequential \
-lmkl_core -lpthread

MKL库参数详细设置方法:英特尔® 数学核心函数库

用户在天河上安装商业软件无法正常使用

天河使用的是自主互联的通讯系统,一般是把开源或商业的有源代码的软件,重新编译后,才能正常使用的。

使用 Intel 编译器编译时报错:ld: cannot find -lm

编译时出现该报错,一般是由于在编译选项中含有 -fast(包含 -static )或 -static 导致的,该选项需要使用 glibc 的静态库。由于部分操作系统没有安装 glibc 的静态库,或者 glibc 库不在标准目录下,因而没有 libm 的静态库。

解决方法:

locate libm.a 
ifort -static hello.f90 - L/usr/lib/x86_64-redhat-linux5E/lib64 -lm

可参考链接:Error: ld: cannot find -lm

使用 gfortran 编译程序,同时调用 liblapack.a 和 libblas 时在链接过程中报错

错误描述:在天河系统上,使用 gfortran 编译程序,同时调用 /vol-th/software/lapack-3.4.2下的liblapack.alibblas.a 时( -L/vol-th/software/lapack-3.4.2 -llapack -lblas),在链接过程中报错:

/vol-th/software/lapack-3.4.2/liblapack.a(ilaenv.o): In function 'ilaenv_':
ilaenv.f:(.text+0x106): undefined reference to `for_cpystr'
/vol-th/software/lapack-3.4.2/liblapack.a(xerbla.o): In function `xerbla_':
xerbla.f:(.text+0x13): undefined reference to `for_len_trim'

原因:/vol-th/software/lapack-3.4.2 下的 liblapack.alibblas.a 是使用 Intel2013 编译器编译生成的,在使用这两个库的某些函数时,需要调用 Intel 编译器的一些基础库 libifcore.a,因此需要显示地加入该库,链接书写内容应该为

-L/vol6/software/lapack-3.4.2 -llapack -lblas \
-L/vol6/intel_composer_xe_2013.0.079_lib -lifcore

3.作业运行问题

为什么我用 yhi命令看到很多 idle 的节点,但是我提交作业后,作业不能立即执行?

TH-1A 的作业调度原则是先来先服务,因为已经有用户优先于您提交作业并且已经在排队,所以 idle 的节点需要优先分配给优先提交作业的用户,即使用户提交作业需求节点数小于空余节点数,仍然因为先来先服务原则,处于等待状态。

我用 yhrun提交完作业以后,网络或终端断掉后,我的作业也相应停止

请您使用 yhbatch 命令提交作业,这样您就不会出现网络或终端断掉后作业停止的现象。

请问您们的系统上的内存最大是多少 G? 我的并行程序需要使用 48G 或更大一些内存怎么办?

TH-1A 系统的每个常规计算节点上的内存是 24G,如果您的并行程序需要比 24G 大的内存,您可以通过使用更多的节点来分散您的内存的使用。目前已升级部分计算节点的内存至 48G,如有需求可直接联系我们。另外,HPC1 系统的节点内存是 128G,用户也可选择使用该系统。

请问我们的计算任务到某一时刻自动终止了,提示是有节点 due to time limit 而终止程序,请问贵中心的计算任务是有时间限制的吗?

我们的 TH-1A 系统的队列是有时间限制的,命令行下输入 yhi,输出结果的第三列 TIMELIMIT 即为不同分区下的最大作业运行限制。请您经常查看作业运行状态,以确保您的作业在正常运行。

任务提交后显示在计算,然后任务消失,也没有输出 slurm-*-out 文件

其所在分区存储设备可能没有挂载,请联系系统管理员。

任务突然运行速度变慢

可能是该任务使用的计算节点内存报错,可换其他节点重新提交任务。

任务输出结果总是显示 Disk quota exceeded

首先查询磁 1 盘空间是否超限(查询命令参见存储问题第 2 点),如果未超限,系统有时会误报超限,在每个月的定期维护时会解决掉这个问题。

运行作业提示error while loading shared libraries: libXXX.so: cannot openshared object file: No such file or directory

在计算时找不到动态库是因为计算节点和登陆节点的软件环境有所不同。链接器在处理动态库时将链接时路径(Link-time path)和运行时路径(Run-time path)分开,-L 只是指定了程序链接时库的路径,并不影响程序执行时库的路径;-Wl,-rpath 指定程序运行时库的路径,该库的路径信息保存在可执行文件中,运行时它会直接到该路径查找库;也可使用 LD_LIBRARY_PATH 环境变量来指定动态库在运行时的搜索路径。

作业运行时提示:couldn’t chdir to ‘/vol-th/home/daix’: No such file or directory: going to /tmp instead

原因为所使用的计算队列无法访问用户所在的 /vol-th 目录,即所使用的计算队列没有挂载到 /vol-th 目录。解决方法:将问题报告给请联系系统管理员。

在计算节点上运行程序,找不到某些命令,比如说提示 bc: Command not found

复制登录节点上的 bc 命令到自己账户下,设置好该命令的环境变量后,重新运行就可以找到命令。

PBS 作业系统里查看运行的节点名称的变量 $PBS_NODELINE,在 TH-1A 里对应哪一个变量?

可以试试天河上的作业调度获取节点的变量 $SLURM_NPROCS ,它与PBS 的 $PBS_NODELINE 是一样的功能。

提交作业后,提示 yhbatch: error: Batch job submission failed: User’s group not permitted to use this partition

您提交作业 -p 参数后面指定的队列名称错误,请检查您可以使用的队列。

任务提交运行后,有时在还未达到队列的时间天数期限时,运行的程序已“停止工作”(输出文件没有更新),但是通过作业查询命令 yhq 查看,作业看起还在 R 运行

遇到这个情况,请您及时手动杀掉您的作业,从断掉的地方接着续算就可以了。

运行作业报错 slurmd[cn4234]: Cannot send after transport endpoint shutdown

请重新提交作业,并同时使用 -x cn4234 把这个节点过滤掉不使用就可以了。

运行作业报错 yhrun: error: Task launch for 2440965.0 failed on node cn2892: Job credential expired

请重新提交作业,并同时使用 -x cn2892 把这个节点过滤掉不使用就可以了。

运行作业报错 forrtl: severe (41): insufficient virtual memory

运行作业的内存不够用了,请尝试多使用节点,每个节点上少使用核数来提交运行。

提交作业报错 yhbatch: error: Batch job submission failed: Batch job violates accounting/QOS policy(job submit limit, user’s size and/or time limits)

您没有提交作业的权限,请联系工程师,为您开通权限。

提交的在运行的工作,刚刚发现状态都变显示为 S,另外,其他几个显示 PD 的工作,NODELIST 也显示为 PartitionDown 。不知是否是由于中心在做一些维护所致,这会影响这些工作的运行吗?

S 状态是系统管理员正在维护系统,临时挂起用户作业后显示的状态。原来显示 PD 状态的变成 PartitionDown 状态是不影响工作运行。

作业运行的状态为 CG,自己也杀不掉这个作业,是否影响我的使用,这个问题如何解决?

CG 状态是作业正在退出,用户如果杀不掉这些 CG 状态的作业也没关系,它并不影响您的使用,管理员会集中定期处理这个 CG 状态的作业。

输出的 slurm 文件中是如下数据:yhrun: got SIGCONT。我在天河服务器用户手册上没找到这条数据的解释。请问这条数据代表什么意思?

这个是系统管理员临时维护系统,为了避免影响用户的作业,而把用户的作业挂起了出现的提示了。

使用天河software目录下的一个 mpi 实现编译程序,运行时 slurm 文件中提示报错

报错问题:使用天河 software 目录下的一个 mpi 实现编译程序,运行时 slurm 文件中提示报错。

GLEX_ERR(cn1368): _Progress(172), err
CQE:status=Dest_Key:opcode=RDMA_WRITE:signaled=1:rmt_nic_id=1370
yhrun: Job step aborted: Waiting up to 2 seconds for job step to finish.
Fatal error in PMPI_Bcast: Other MPI error, error stack:
MPIDI_CH3I_Progress(176): progress engine failure
In: PMI_Abort(1, Fatal error in PMPI_Bcast: Other MPI error, error stack:
MPIDI_CH3I_Progress(176): progress engine failure)
slurmd[cn1368]: *** STEP 2796179.0 KILLED AT 2015-10-12T11:27:12 WITH SIGNAL 9 ***
slurmd[cn1368]: *** STEP 2796179.0 KILLED AT 2015-10-12T11:27:12 WITH SIGNAL 9 ***

该错误提示一般是由 mpi 版本导致。解决方法:使用/vol6/source.sh 中的内容替换原~/.bashrc 中关于 intel 编译器、mpi 的路径。

程序运行报错:Fatal Error: This program was not built to run in your system.

报错问题:程序运行报错,Fatal Error: This program was not built to run in your system. Please verify that both the operating system and the processor support Intel(R) AVX. yhrun: error: cn2375: task 0: Exited with exit code 1

原因:该错误说明程序的编译时环境和运行时环境不一致,即程序编译时使用了支持 AVX 的选项,运行时的硬件环境不支持该 AVX 优化。一般这种情况发生是由于用户在编译程序时加入 -xHOST/-xAVX 选项(或是在安装软件时,系统自动读取到登陆节点上 CPU 的 flag 支持 avx ,故在编译软件时加入了 -xHOST),那程序就会根据登陆节点的 CPU 配置信息进行优化编译,然而程序的运行是在计算节点上,计算节点的 CPU配置信息可能不支持 AVX,就与登陆节点不同,就会报上面的提示错误。

解决方法:编译时去掉 -xHOST/-xAVX 选项,使用其他优化选项。

备注:-xHost will cause icc/icpc or icl to check the cpu information and find the highest level of extended instructions support to use.

天河登陆节点 ln1、ln2、ln3 上的 CPU 配置信息 flag 均无 avx ,ln8、ln9上均有 avx

如果在 ln8 或 ln9 上安装软件时,configure 后一定要检查下编译 flag 是否加入了 -xHOST,如果加入,请修改对应的 configure 文件,将 -xHOST 删除。

4.存储问题

我使用 ls 命令查看目录下的文件,可是一直停留下那里,没有显示

遇到这个问题,您可以等待一会,再重新使用 ls 命令查看目录文件。

  • 原因之一:可能是 TH-1A 的登录节点负载比较重,造成使用终端命令受到影响
  • 原因之二:可能是用户客户端的网络负载比较重,出现比较严重的网络延迟
  • 原因之三:可能是 TH-1A 系统的存储正在进行恢复调整。

执行文件操作时提示:Disk quota exceeded

原因为用户的磁盘配额已超限,天河系统针对用户的数据量和文件数量分别设有上限,可通过 lfs quota 命令查看具体信息;可通过删除临时数据来降低数据量和文件数量。命令行下输入 lfs quota -g 用户组名 /存储文件系统名 ,用于查看所在用户组的配额权限;命令行下输入 lfs quota -u 用户名 /存储文件系统名 ,用于查看所在用户的配额权限。

作业运行提示forrtl: Input/output error

可能是存储某一时刻压力较大,造成 IO 错误,请您重新提交作业。

作业运行时报错:forrtl: No space left on device,forrtl: severe (38): error during write, unit 12,但是同样的作业再次提交时可能就正常运行完成

该问题主要由文件系统中某一 OST 存储已满导致,请联系与您对接的工程师或系统管理员。Lustre 文件系统由若干 IO 服务器(Object Storage Services)和 Object Storage Targets(OST)组成。当对一个文件进行读写操作时,为了提高 IO 效率,文件系统会自动将该文件的读写操作分割成多个,在多个 OST 上并发实现,该过程也被称为 file striping。如果在该过程中,使用到的某一 OST 出现问题,就会发生读写错误。

5.GPU使用问题

使用 CUDA toolkit 编译程序后,在 gpu_test 分区提交作业,运行时提示错误:no CUDA-capable device is detected

可能原因有二种情况:

1.可能是分配到的该计算节点上用于连接CPU 与 GPU 的 PCIe 总线松动,导致无法找到 device。解决方法:在提交作业是可使用 -x 选项屏蔽该节点;

2.可能是编译时使用的 CUDA toolkit 和计算节点上安装的 CUDA driver 版本不一致导致,gpu_test 分区的计算节点上的 CUDA driver 版本是与 CUDA 7.5 的 toolkit 对应的。解决方法:使用 CUDA 7.5 或 CUDA 5.0 的 toolkit 编译程序。另外,如果同时设置了多个版本的 CUDA 环境,也会导致该问题出现,解决方法:清除所有有关 CUDA 的环境变量设置,然后重新加载一个版本的 CUDA 环境。

6.其他问题

我收到中心发来的用户管理文件?请问里面的内容需要都填写吗?

我们的用户管理文件只要是要求填写的地方都是需要申请用户详细填的,注册信息签字的地方需要负责人或课题组组长,这样才可以审核通过。暂不受理在校学生的试用申请。

用户是否可以在 TH-1A 上自行安装软件?

如果是开源软件,用户可以在共享目录下查找,或者在自己的账户下部署。如果是商业软件,需用户有软件的使用版权,仅限于该用户自己使用,且用户须对合法性负责。

我提交的计算任务需要排队吗,还是说任何时候我都有优先级?

除独占资源的用户外,普通用户提交计算作业后均需要排队。作业提交由作业调度系统依据提交时间及核数依序排队。作业先提交,或所需核较少,优先排队。目前中心作业排队情况良好,排队时间不会特别长。

计算队列有无时间限制?最长队列为多久?

依据不同的租用方式和价格,用户分配在不同的计算分区。目前,队列为 2 天和 10 天以及无时间限制。

数据如何传输?速度有多快?

用户可以通过 Winscp 等工具进行数据的上传和下载,速度与您办理的网络有关。通常可以达到 几百KB-几M/s 。如果数据量比较大,可以通过寄送硬盘的方式,由中心系统部提供免费的数据拷贝服务,再通过快递邮寄回去。

数据传输时报错

数据传输时报错:Failed to open a secure file transfer session 目前对用户开放的登陆节点有 LN1、LN2、LN3、LN8 和 LN9。其中,LN1、LN2 和 LN8 作为用户的登陆节点,LN3 和 LN9 作为用户的数据传输节点。请登录数据传输节点来进行数据传输。

VASP 报错

VASP 报错 MKL FATAL ERROR on loading the function mkl_blas_mc3_idamax; Lammps 报错 MKL FATAL ERROR on loading the function mkl_dft_mc3_dfti_create_dc1d

通过设置环境变量,可以解决这个问题。

export LD_LIBRARY_PATH=/vol-th/intel_composer_xe_2013.0.079_lib:$LD_L IBRARY_PATH

上传数据提示 Encountered 1 error during the transfer

使用客户端传输软件如 Winscp 由本地上传数据至天河系统时,提示 Encountered 1 error during the transfer

如果本地待传输的文件名称或所在路径含有空格或括号,在点击传输操作时就会出现上面的错误。将特殊字符替换为常规字符即可解决问题。

Indices and tables