저는 일부 기존 프로세스를 현재 slurm에서 실행 중인 개선된 Linux 클러스터로 옮기려고 노력해 왔습니다. 나는 끝났다고 생각했지만 이제 내 문제는 여러 코어를 실행하려고 하는 것입니다.
이것은 내 제출 스크립트입니다.
#!/bin/bash
#
#SBATCH --job-name=test_mpi
#SBATCH --output=res_mpi.txt
#
#SBATCH -n 4
#SBATCH --time=10:00
srun mkdir -p /tmp/tedhyu/new
srun cp Ru13.in /tmp/tedhyu/new/lcao.in
srun cp ~tedhyu/atom_pbe/* /tmp/tedhyu/new
srun cd /tmp/tedhyu/new
srun -N 1 -n 4 --chdir=/tmp/tedhyu/new mpiexec ~tedhyu/bin/origin1_centos6.4_mpich2_quest_265c.x
"qstat -n"을 실행하면 코어가 하나만 표시됩니다.
작업 ID 사용자 이름 대기열 이름 SessID NDS TSK 메모리 시간 사용량 S 시간
11778 tedhyu 원자 test_mpi -- 1 4 -- 00:10 C 00:00
node3-5/4
다음은 1개의 코어만 실행 중임을 보여주는 출력의 처음 몇 줄입니다.
srun: error: node3-5: tasks 0-3: Exited with exit code 1
MPINFO::: Global Communicator :::
MPINFO::: Global Context = **** :::
MPINFO::: Global Size = 1 :::
MPINFO::: Global Root = 0 :::
MPINFO::: Global Rank = 0 :::
DEV: VDW development version
전역 크기는 4와 같아야 합니다.
누구든지 올바른 방향으로 나를 가리킬 수 있다면... 감사합니다!
답변1
스크립트의 마지막 줄에는 srun을 사용하지 마세요. 실행 파일을 시작하려면 mpirun 또는 mpiexec를 사용하세요.
srun의 기능: 다음에 나오는 명령의 $SLURM_NTASKS 인스턴스(각 예약된 CPU 코어에 대해 하나씩)를 시작합니다. 당신은 이것을 원하지 않고 mpiexec가 작업을 CPU로 포크하기를 원합니다. 예를 들어 마지막 줄은 다음과 같습니다.
mpirun -np $SLURM_NTASKS ./myexecutable.exe