SLURM'ler srun
ile sbatch
komutlar arasındaki farkın ne olduğunu anlamaya çalışıyorum . Aşağıdaki sorulara özel cevaplar yerine genel bir açıklamadan memnun olacağım, ancak burada bir başlangıç noktası olabilecek ve aradığım şey hakkında bir fikir verebilecek bazı belirli kafa karışıklıkları var.
Belgelere göre , srun
iş sbatch
göndermek içindir ve daha sonra icra edilmek üzere iş göndermek içindir, ancak pratik fark benim için net değil ve davranışları aynı görünüyor. Örneğin, her biri 2 CPU'lu 2 düğüme sahip bir kümem var. Eğer yürütürsemsrun testjob.sh &
arka arkaya 5x bir işlemci irade yürütme olarak, kullanılabilir hale gelinceye kadar, bu güzel beşinci iş sıraya olacaktır sbatch testjob.sh
.
Soruyu daha somut hale getirmek için, başlamak için iyi bir yer olabileceğini düşünüyorum: Biriyle yapabileceğim, diğeriyle yapamayacağım şeyler nelerdir ve neden?
Her iki komutun argümanlarının çoğu aynıdır. En alakalı olanlardır --ntasks
, --nodes
, --cpus-per-task
, --ntasks-per-node
. Bunlar birbirleriyle nasıl ilişkilidir ve srun
vs için nasıl farklılık gösterir sbatch
?
Belirli bir fark olduğunu srun
eğer hataya neden olur testjob.sh
çalıştırılabilir izni ie sahip değildir chmod +x testjob.sh
oysa sbatch
mutlu o çalışacaktır. Durumun böyle olmasına neden olan "kaputun altında" neler oluyor?
Belgelerde ayrıca komut dosyalarının srun
içinde yaygın olarak kullanılanlardan bahsedilir sbatch
. Bu, şu soruyu doğurur: Birbirleriyle nasıl etkileşim kurarlar ve her birinin "kanonik" kullanım durumu nedir? Özellikle, srun
kendi başına kullanır mıydım?
srun
gönderi metninin içini aramakla uğraşayım? Belki de bir "iş adımı" nın anlamı konusunda kafam karışmıştır. Örneğin,runjob.sh
içeren bir komut dosyam varsa,#!/bin/bash srun myjob.sh
(a)sbatch runjob.sh
- (b)sbatch myjob.sh
- (c)srun myjob.sh
- (d) arasında pratik bir fark varsrun runjob.sh
mı? (Sonuncusu aptalca ama merak ediyorum)