티스토리 뷰
반응형
KISTI 슈퍼컴퓨팅센터의 tachyon의 경우 사용자당 10개의 job만 제출할 수 있다. 따라서 실행할 작업이 시리얼한 작업일 경우 한번에 10개 이상의 노드를 사용하기 위해서는 아래와 같이 MPI 코드로 래퍼를 만들어서 실행하면 원하는 갯수 만큼의 시리얼 작업을 한번에 수행할 수 있다.
script_0.sh ~ script_N.sh의 스크립트를 미리 만들어 놓은 후 실행 스크립트에서 #$ -pe mpi_fu N으로 지정하면 N개의 스크립트를 하나의 qsub로 해결~!!
=====mpi_wrapper.c=====
#include "mpi.h"
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char *argv[])
{
int done = 0, n, myid, numprocs, i;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Get_processor_name(processor_name,&namelen);
char script[100];
char *scr="script_";
fprintf(stderr,"debug msg>> Process %d on %s\n",
myid, processor_name);
for(i=0;i<numprocs;i++){
if(myid==i){
sprintf(script,"/home/hongiiv/mpi_example/%s%d.sh",scr,i);
system(script);
}
}
MPI_Finalize();
return 0;
}
=====mpi_run.sh=====
#!/bin/bash
#$ -V
#$ -cwd
#$ -N impute_mpi
#$ -pe mpi_fu 20
#$ -q normal
#$ -R yes
#$ -wd /work01/사용자아이디
#$ -l normal
#$ -M 사용자이메일
#$ -m e
mpirun -machinefile $TMPDIR/machines -np $NSLTOS ./mpi_wrapper
=====작업 제출=====
qsub mpi_run.sh
결과는 아직 큐에 대기중이라 실행되고 있지않음,,, : )
script_0.sh ~ script_N.sh의 스크립트를 미리 만들어 놓은 후 실행 스크립트에서 #$ -pe mpi_fu N으로 지정하면 N개의 스크립트를 하나의 qsub로 해결~!!
=====mpi_wrapper.c=====
#include "mpi.h"
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char *argv[])
{
int done = 0, n, myid, numprocs, i;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Get_processor_name(processor_name,&namelen);
char script[100];
char *scr="script_";
fprintf(stderr,"debug msg>> Process %d on %s\n",
myid, processor_name);
for(i=0;i<numprocs;i++){
if(myid==i){
sprintf(script,"/home/hongiiv/mpi_example/%s%d.sh",scr,i);
system(script);
}
}
MPI_Finalize();
return 0;
}
=====mpi_run.sh=====
#!/bin/bash
#$ -V
#$ -cwd
#$ -N impute_mpi
#$ -pe mpi_fu 20
#$ -q normal
#$ -R yes
#$ -wd /work01/사용자아이디
#$ -l normal
#$ -M 사용자이메일
#$ -m e
mpirun -machinefile $TMPDIR/machines -np $NSLTOS ./mpi_wrapper
=====작업 제출=====
qsub mpi_run.sh
결과는 아직 큐에 대기중이라 실행되고 있지않음,,, : )
반응형
공지사항
최근에 올라온 글