扭矩作业随机死亡

时间:2018-02-27 22:03:36

标签: bash data-science scientific-computing pbs torque

我正在以大约27个批次运行Python3脚本,所有这些脚本都有不同的输入。然后将结果保存到结果/ $ sizex $ size文件夹中。工作目录也必须更改为该文件夹,以便程序可以保存一些图像和数据。

这是我的pbs脚本:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.aeza.sta">
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <receiver android:name=".TestWidget" android:enabled="true" android:exported="false" >
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>

            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/test_widget_info" />
        </receiver>

        <activity android:name=".TestWidgetConfigureActivity">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
            </intent-filter>
        </activity>
    </application>

</manifest>

这些是我从运行#!/bin/bash #PBS -l nodes=1:ppn=28 #PBS -l mem=16gb #PBS -l walltime=120:00:00 cd $PBS_O_WORKDIR mkdir -p results module purge module load newmodules/1.0-Lmod GCC/6.3.0-2.27 OpenMPI/2.0.2 module load Python/3.6.1 j=0 for i in $(seq 2 2 1024); do if [ "$j" -gt "28" ]; then wait; j=0; fi cd results mkdir -p $i"x"$i cd $i"x"$i time python3 $PBS_O_WORKDIR/model.py $i > result.txt & cd $PBS_O_WORKDIR ((j++)) ((j++)) done wait 获得的日志:

tracejob

作业运行一个小时左右然后随机死亡。我不知道为什么。我试过增加墙上的时间但是没有做任何事情。

基本上我的python脚本读取2的倍数从2到1024,并且每个脚本并行运行(批量为27,以避免服务器崩溃/交换)。谁能说明为什么会这样?

1 个答案:

答案 0 :(得分:0)

所以我通过使用GNU parallel解决了这个问题。在某些服务器上,您可能需要加载模块:module load gnu-parallel

然后在pbs脚本中我只删除for循环:

parallel -j28 python3 model.py {1} > results{1}.txt ::: $(seq 100 -2 2)

我还必须更改程序中的工作目录,这样结果就不会被覆盖。