작업 ID(작업 번호)가 특정 숫자보다 큰 Slurm에서 작업을 취소하는 방법은 무엇입니까?

작업 ID(작업 번호)가 특정 숫자보다 큰 Slurm에서 작업을 취소하는 방법은 무엇입니까?

저는 Slurm에 800개의 일자리를 제출했습니다. 작업 ID/번호가 해당 숫자보다 큰 작업을 취소하고 싶습니다(오류가 있기 때문입니다). 일부는 실행 중이고 일부는 대기열에 올바르게 있기 때문에 모든 작업을 취소하고 싶지 않습니다.

답변1

주어진 숫자보다 큰 작업을 취소하는 방법에 대해 엄격하게 대답하지는 않지만 @mona-jalivand가 해결하려고 하는 문제인 설명된 범위 내에서 작업을 취소하는 문제를 해결합니다.여기

scancel  {1000..1050}

bash 스크립트로 뛰어드는 것보다 훨씬 간단합니다... 제게는 잘 작동합니다.

답변2

squeue을 사용하여 자신에게 속한 모든 작업 목록을 가져온 다음 목록을 반복하여 기준(X보다 큰 작업 ID)과 일치하는 모든 작업을 취소 해야 합니다 scancel.

squeue매우 유연한 출력 옵션이 있으며 -o일명 --format옵션을 통해 원하는 것을 정확하게 인쇄하도록 지시할 수 있습니다. 이 경우 작업 번호만 필요합니다. man squeue에 따르면 %i형식 문자열은 다음과 같습니다.

%나작업 또는 작업 단계 ID입니다.

작업 배열의 경우 작업 ID 형식은 "_" 형식입니다. 기본적으로 작업 배열 인덱스 필드 크기는 64바이트로 제한됩니다. 더 큰 필드 크기를 지정하려면 환경 변수 SLURM_BITSTR_LEN을 사용하십시오. (작업 및 작업 단계에 적용) 이기종 작업 할당의 경우 작업 ID 형식은 "#+#" 형식입니다. 여기서 첫 번째 숫자는 "이기종 작업 리더"이고 두 번째 숫자는 "이기종 작업 리더"입니다. "작업 리더 구성", 두 번째 숫자는 제로 소스 오프셋입니다. 작업의 모든 구성 요소.

다음 sh 스크립트에서는 이를 사용합니다.

#!/bin/sh

if [ -z "$1" ] ; then
    echo "Minimum Job Number argument is required.  Run as '$0 jobnum'"
    exit 1
fi

minjobnum="$1"

myself="$(id -u -n)"

for j in $(squeue --user="$myself" --noheader --format='%i') ; do
  if [ "$j" -gt "$minjobnum" ] ; then
    scancel "$j"
  fi
done

cancel-jobs.sh예를 들어 Make it running 을 사용하여 로 저장한 chmod +x cancel-jobs.sh다음 이를 실행하여 ./cancel-jobs.sh 50000작업 ID가 50,000보다 큰 모든 작업을 취소합니다.

최소 작업 번호보다 크거나 같은 작업 번호를 취소하려면 -gt로 변경하십시오 -ge.


작은 최적화는 각 작업을 개별적으로 취소하는 대신 일치하는 작업 번호 목록을 작성하고 단일 호출로 모두 취소하는 것입니다 scancel.

예를 들어 bash 배열을 사용하여 작업 번호를 저장합니다.

#!/bin/bash

declare -a jobs=()

if [ -z "$1" ] ; then
    echo "Minimum Job Number argument is required.  Run as '$0 jobnum'"
    exit 1
fi

minjobnum="$1"

myself="$(id -u -n)"

for j in $(squeue --user="$myself" --noheader --format='%i') ; do
  if [ "$j" -gt "$minjobnum" ] ; then
    jobs+=($j)
  fi
done

scancel "${jobs[@]}"

이는 첫 번째 스크립트와 동일한 작업을 수행하지만 약간 더 효율적입니다.

답변3

나는 자주 사용한다

squeue -u $user | sort

작업 ID를 기준으로 대기열을 정렬합니다. 이 경우 화면 하단에 22222와 같이 가장 큰 작업 ID가 있습니다. 11111이 첫 번째 잘못된 작업 ID인 경우 다음을 사용하여 범위를 취소할 수 있습니다.

scancel {11111..22222}

이는 {}쉘에 의해 확장됩니다( echo {3..11..2}예: try).

관련 정보