OGS HPC 集群中的 Perl 运行时错误

Posted

技术标签:

【中文标题】OGS HPC 集群中的 Perl 运行时错误【英文标题】:Perl runtime bug in OGS HPC cluster 【发布时间】:2018-12-12 17:51:32 【问题描述】:

我正在尝试调试 HPC 集群。

一个问题:通过 Open Grid Scheduler (OGS/GE 2011.11) 将 Perl 脚本提交到数百个节点的 Linux Suse 集群中。

这会为集群中“长队列”上的 Perl 脚本生成运行时错误,但不会在“短队列”上生成运行时错误。

$> qsub -cwd -q short.q ./test.pl

输出没问题

$> qsub -cwd -q long.q ./test.pl

输出错误日志, /var/spool/sge/comp26/job_scripts/3141815:第 2 行:意外标记附近的语法错误 my' /var/spool/sge/comp26/job_scripts/3141815: line 2:open (my $fh, '>', 'test.out');'

如果我将一个 shell 脚本提交到它工作的长队列,包含

perl ./test.pl 

有什么想法吗?

系统:GNU bash,版本 4.2.46(2),Perl v5.16.3 (yuk)

测试脚本

#!/usr/bin/perl
# Also tried #!/bin/perl
system("perl -v > perl.out");
open (my $fh, '>', 'test.out');
print $fh 'test';
close $fh;

【问题讨论】:

该错误消息来自 shell,而不是 perl,因此无论出于何种原因,该脚本都不会被视为 perl 脚本 谢谢,我问过它“哪个 perl”,但除此之外我被卡住了。 推荐的 shebang 是 #!/usr/bin/env perl - 请参阅 ***.com/questions/2791954/… 您是否尝试过设置 perl 二进制文件的确切路径? 【参考方案1】:

正如@bytepusher 描述的那样,解决方案是

#!/usr/bin/env perl

并且提交到qsub -cwd -q long.q ./test.pl 很好。

【讨论】:

以上是关于OGS HPC 集群中的 Perl 运行时错误的主要内容,如果未能解决你的问题,请参考以下文章

HPC 集群:选择 SLURM sbatch 中的 CPU 和线程数

R在HPC MPIcluster上运行foreach dopar循环

在主目录中安装perl模块时出现问题

具有集群的 mapView(_:didAdd:) 中的 MapKit 运行时错误

将负载分配到在集群的每个节点上运行的 perl 脚本实例

在HPC群集上从八度调用R脚本时出错