用pbs集群运行comsol,一些已踩的坑

需求分析

最近公司新上了一个计算集群,有20+个机器,每个机器有20+的核,提前已经装好了PBS作业管理系统,这个系统在Linux集群中很常用,自己做科学计算所用的商业软件是comsol,目的就是用comsol进行并行计算,期间主要参考了这个英文帖子。很不幸的是,这个帖子中的pbs集群的示例代码有些错误,在此进行一下记录。

前期准备

做集群计算,首先要安装好商业软件,首先要保证每台子节点都能访问到comsol的运行主程序,而且这个文件的目录必须是一致的,这是前提,测试的方法就是ssh到某个节点上,然后运行comsol,看是否能运行,如果这点保证不了,就无法使用该示例代码。

示例代码

该网站提供的pbs示例代码有一些小错误,我将这错误改正后,发到这里,供参考:

#!/bin/bash
# ##############################################################################
#
export nn=4
export np=8
export inputfile="simpleParametricModel.mph"
export outputfile="outfile.mph"
#
qsub -V -l nodes=${nn}:ppn=${np} <<'__EOF__'
#
#PBS -N COMSOL
#PBS -q dp48
#PBS -o $HOME/cluster/job_COMSOL_$$.log
#PBS -e $HOME/cluster/job_COMSOL_$$.err
#PBS -r n
#PBS -m a -M email@domain.com
#
echo "------------------------------------------------------------------------------”
echo "--- Starting job at: `date`"
echo
#
cd ${PBS_O_WORKDIR}
echo "--- Current working directory is: `pwd`"
#
np=$(wc -l < $PBS_NODEFILE)
echo "--- Running on ${np} processes (cores) on the following nodes:"
cat $PBS_NODEFILE
#
cat $PBS_NODEFILE | uniq > comsol_hostfile
echo "--- parallel COMSOL RUN"
comsol batch -nn $nn -nnhost 1 -np $np -f comsol_hostfile -inputfile $inputfile -outputfile $outputfile -batchlog batch_COMSOL__$$.log
echo
echo "--- Job finished at: `date`"
echo "------------------------------------------------------------------------------”
#
__EOF__

主要的问题就是原网页中的´ 应改为` ,请忽略双引号。

如果有一点Linux的bash基础,阅读该代码就很顺畅了,有问题请在留言区一起交流讨论。

用pbs集群运行comsol,一些已踩的坑》有1个想法

  1. 你好,comsol batch -nn $nn -nnhost 1 -np $np -f comsol_hostfile 这里为啥还要指定hostfile呀,pbs调度的目的是啥呢

发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据