Cluster computing 通过Dask向PBS提交自定义作业脚本?

Cluster computing 通过Dask向PBS提交自定义作业脚本?,cluster-computing,dask,dask-distributed,pbs,dask-jobqueue,Cluster Computing,Dask,Dask Distributed,Pbs,Dask Jobqueue,我有一个PBS作业脚本,其中包含一个可执行文件,可将结果写入out文件 ###一些行 PBS_O_EXEDIR=“path/to/software” EXECUTABLE=“executablefile” OUTFILE=“out” ###复制计算节点上的应用程序目录 [-d$PBS_O_EXEDIR]| mkdir-p$PBS_O_EXEDIR [-w$PBS_O_EXEDIR]&\ rsync-Cavz--rsh=$SSH$HOST:$PBS_O_EXEDIR`dirname$PBS_O_E

我有一个PBS作业脚本,其中包含一个可执行文件,可将结果写入out文件

###一些行
PBS_O_EXEDIR=“path/to/software”
EXECUTABLE=“executablefile”
OUTFILE=“out”
###复制计算节点上的应用程序目录
[-d$PBS_O_EXEDIR]| mkdir-p$PBS_O_EXEDIR
[-w$PBS_O_EXEDIR]&\
rsync-Cavz--rsh=$SSH$HOST:$PBS_O_EXEDIR`dirname$PBS_O_EXEDIR`
[-d$PBS|O|u WORKDIR]| mkdir-p$PBS|O|u WORKDIR
rsync-Cavz--rsh=$SSH$HOST:$PBS_O_WORKDIR`dirname$PBS_O_WORKDIR`
#切换到工作目录
cd$PBS___工作日
#将作业ID保存在输出文件中
echo“PBS-JOB-ID是$PBS_JOBID”>$OUTFILE
#运行可执行文件
$PBS_O_EXEDIR/$EXECUTABLE>>$OUTFILE
在我的项目中,我必须使用Dask提交这份工作,并对其进行监控。因此,我已经像这样配置了jobqueue.yaml文件

作业队列:
pbs:
名称:htc_calc
#Dask工作者选项
核心:4#每个作业的核心总数
内存:50GB#每个作业的内存总量
#PBS资源管理器选项
谢邦:“#!/usr/bin/env bash”
华尔街时间:“00:30:00”
执行目录:“/home/r/rb11/softwares/FPLO/bin”
可辩解:“fplo18.00-57-x86_64”
输出文件:“输出”
额外作业:“exe_目录/可执行文件>>输出文件”
然而,我在通过Dask提交作业时遇到了这个错误

qsub: directive error: e


tornado.application - ERROR - Exception in callback functools.partial(<function wrap.<locals>.null_wrapper at 0x7f3d8c4a56a8>, <Task finished coro=<SpecCluster._correct_state_internal() done, defined at /home/r/rb11/anaconda3/envs/htc/lib/python3.5/site-packages/distributed/deploy/spec.py:284> exception=RuntimeError('Command exited with non-zero exit code.\nExit code: 1\nCommand:\nqsub /tmp/tmpwyvkfcmi.sh\nstdout:\n\nstderr:\nqsub: directive error: e \n\n',)>)
Traceback (most recent call last):
  File "/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site-packages/tornado/ioloop.py", line 758, in _run_callback
    ret = callback()
  File "/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site-packages/tornado/stack_context.py", line 300, in null_wrapper
    return fn(*args, **kwargs)
  File "/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site-packages/tornado/ioloop.py", line 779, in _discard_future_result
    future.result()
  File "/home/r/rb11/anaconda3/envs/htc/lib/python3.5/asyncio/futures.py", line 294, in result
    raise self._exception
  File "/home/r/rb11/anaconda3/envs/htc/lib/python3.5/asyncio/tasks.py", line 240, in _step
    result = coro.send(None)
  File "/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site-packages/distributed/deploy/spec.py", line 317, in _correct_state_internal
    await w  # for tornado gen.coroutine support
  File "/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site-packages/distributed/deploy/spec.py", line 41, in _
    await self.start()
  File "/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site-packages/dask_jobqueue/core.py", line 285, in start
    out = await self._submit_job(fn)
  File "/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site-packages/dask_jobqueue/core.py", line 268, in _submit_job
    return self._call(shlex.split(self.submit_command) + [script_filename])
  File "/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site-packages/dask_jobqueue/core.py", line 368, in _call
    "stderr:\n{}\n".format(proc.returncode, cmd_str, out, err)
RuntimeError: Command exited with non-zero exit code.
Exit code: 1
Command:
qsub /tmp/tmpwyvkfcmi.sh
stdout:

stderr:
qsub: directive error: e
qsub:指令错误:e
tornado.application-错误-回调functools.partial中出现异常(,)
回溯(最近一次呼叫最后一次):
文件“/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site packages/tornado/ioloop.py”,第758行,在运行回调中
ret=callback()
文件“/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site packages/tornado/stack_context.py”,第300行,空包装
返回fn(*args,**kwargs)
文件“/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site packages/tornado/ioloop.py”,第779行,在“放弃未来”结果中
future.result()
结果中的文件“/home/r/rb11/anaconda3/envs/htc/lib/python3.5/asyncio/futures.py”,第294行
提出自己的意见
文件“/home/r/rb11/anaconda3/envs/htc/lib/python3.5/asyncio/tasks.py”,第240行,步骤
结果=coro.send(无)
文件“/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site packages/distributed/deploy/spec.py”,第317行,处于“正确”状态
等待w#获得tornado gen.coroutine支持
文件“/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site packages/distributed/deploy/spec.py”,第41行,在_
等待self.start()
文件“/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site packages/dask_jobqueue/core.py”,第285行,开头
out=等待自我提交作业(fn)
文件“/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site packages/dask_jobqueue/core.py”,第268行,在提交作业中
返回self.\u调用(shlex.split(self.submit\u命令)+[script\u filename])
文件“/home/r/rb11/anaconda3/envs/htc/lib/python3.5/site packages/dask_jobqueue/core.py”,第368行,in_call
格式(proc.returncode,cmd_str,out,err)
RuntimeError:命令以非零退出代码退出。
退出代码:1
命令:
qsub/tmp/tmpwyvkfcmi.sh
标准:
标准:
qsub:指令错误:e

如何在Dask中指定自定义bash脚本?

Dask用于分发Python应用程序。在Dask Jobqueue的情况下,它通过向批处理系统提交调度器和工作进程来工作,这些工作进程和工作进程连接在一起形成自己的集群。然后可以将Python工作提交给Dask调度程序

从您的示例来看,您似乎正在尝试使用集群设置配置来运行自己的bash应用程序,而不是Dask

为了使用Dask实现这一点,您应该将jobqueue配置返回到默认值,并编写一个调用bash脚本的Python函数

从dask_作业队列导入PBSCluster
cluster=PBSCluster()
cluster.scale(作业=10)#部署十个单节点作业
从dask.distributed导入客户端
client=client(cluster)#将此本地进程连接到远程工作进程
client.submit(os.system,“/path/to/your/script”)#在所有工作程序上运行脚本

然而,Dask似乎并不适合你所要做的事情。通常,您最好只将作业提交给PBS。

Dask用于分发Python应用程序。在Dask Jobqueue的情况下,它通过向批处理系统提交调度器和工作进程来工作,这些工作进程和工作进程连接在一起形成自己的集群。然后可以将Python工作提交给Dask调度程序

从您的示例来看,您似乎正在尝试使用集群设置配置来运行自己的bash应用程序,而不是Dask

为了使用Dask实现这一点,您应该将jobqueue配置返回到默认值,并编写一个调用bash脚本的Python函数

从dask_作业队列导入PBSCluster
cluster=PBSCluster()
cluster.scale(作业=10)#部署十个单节点作业
从dask.distributed导入客户端
client=client(cluster)#将此本地进程连接到远程工作进程
client.submit(os.system,“/path/to/your/script”)#在所有工作程序上运行脚本
然而,Dask似乎并不适合你所要做的事情。你最好还是把你的工作提交给PBS