我试图了解SLURM srun和sbatch命令之间的区别.我会对一般性解释感到满意,而不是对以下问题的具体答案,但这里有一些具体的混淆点,可以作为一个起点,并让我知道我在寻找什么.
根据文件,srun是提交工作,sbatch是为了提交工作以供以后执行,但实际差异对我来说不清楚,他们的行为似乎是一样的.例如,我有一个包含2个节点的集群,每个节点有2个CPU.如果我srun testjob.sh &连续执行5x,它将很好地排队第五个作业,直到CPU变为可用,就像执行一样sbatch testjob.sh.
为了使问题更具体,我认为一个好的起点可能是:我可以用一个我不能用另一个做的事情做什么,为什么?
两个命令的许多参数都是相同的.似乎最相关的那些是--ntasks,--nodes,--cpus-per-task,--ntasks-per-node.这些是如何相互关联的,它们对于srunvs有sbatch什么不同?
一个特别不同的是,srun将导致一个错误,如果testjob.sh没有执行权限,即chmod +x testjob.sh而sbatch会开心地运行它."引擎盖下"发生了什么导致情况如此?
该文档还提到srun了sbatch脚本中常用的文档.这导致了一个问题:它们如何相互作用,以及它们之间的"规范"用例是什么?具体来说,我会独自使用srun吗?
每当我跑步时conda install/remove/update <package>,它会告诉我这是"解决环境"一段时间,然后再告诉我要下载/安装/更新的内容列表.据推测它正在寻找依赖关系<package>,但为什么它在执行此操作后有时会删除包?例如,当我尝试安装Mayavi时,它决定需要删除Anaconda Navigator.
此外,它不提供仅执行建议操作的子集的选项.有没有办法指定我不想删除包?
在Pytorch中似乎有几种创建张量副本的方法,包括
y = tensor.new_tensor(x) #a
y = x.clone().detach() #b
y = torch.empty_like(x).copy_(x) #c
y = torch.tensor(x) #d
Run Code Online (Sandbox Code Playgroud)
b明确优于a并d根据UserWarning如果我既可以执行我得到a或d。为什么首选它?性能?我认为它的可读性较差。
有/反对使用任何理由c?
Axes.plot()和pyplot.plot()方法有什么区别?是否使用另一个作为子程序?
似乎我的绘图选项是
line = plt.plot(data)
Run Code Online (Sandbox Code Playgroud)
要么
ax = plt.axes()
line = ax.plot(data)
Run Code Online (Sandbox Code Playgroud)
甚至
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
line = ax.plot(data)
Run Code Online (Sandbox Code Playgroud)
是否有可能优先使用一个而不是另一个?
调用forward()父方法的最合适方法是Module什么?例如,如果我对nn.Linear模块进行子类化,我可能会执行以下操作
class LinearWithOtherStuff(nn.Linear):
def forward(self, x):
y = super(Linear, self).forward(x)
z = do_other_stuff(y)
return z
Run Code Online (Sandbox Code Playgroud)
但是,文档说不要forward()直接调用该方法:
尽管需要在此函数中定义前向传递的方法,但应该在之后调用 Module 实例而不是 this,因为前者负责运行已注册的钩子,而后者则默默地忽略它们。
这让我觉得super(Linear, self).forward(x)可能会导致一些意想不到的错误。这是真的还是我误解了继承?
我正在使用Python的subprocess模块调用一些Linux命令行函数.文档解释了这个shell=True论点
如果是shell
True,则将通过shell执行指定的命令
有两个例子,从描述性的角度来看对我来说是相同的(即它们都调用了一些命令行命令),但是其中一个使用shell=True而另一个没有
>>> subprocess.call(["ls", "-l"])
0
>>> subprocess.call("exit 1", shell=True)
1
Run Code Online (Sandbox Code Playgroud)
我的问题是:
shell=Falsedo做什么运行命令shell=True?subprocess.call,check_call并且check_output所有人都必须通过shell执行参数.换句话说,它怎么可能不通过shell执行参数?得到一些例子也很有帮助:
shell=True可以完成的事情
shell=False以及为什么无法完成.shell=True或False为什么不要紧我读通过numpy的文档,并且看起来功能np.prod(...),np.product(...)和ndarray方法a.prod(...)都是等效的.
在样式/可读性和性能方面是否有首选版本?是否存在不同版本更为可取的不同情况?如果没有,为什么有三种独立但非常相似的方式来执行相同的操作?
我已经conda install spyder-notebook -c spyder-ide按照此处的说明安装了 spyder-notebook 插件。如何.ipynb使用插件实际打开文件?启动 Spyder 后,没有启动笔记本的选项,如果我只是打开一个.ipynb文件,它会打开标记而不是笔记本。
(spyder=3.3.2,spyder-kernels=0.3.0 spyder-notebook=0.1.3)