Executando um loop for em paralelo [closed]

1

Eu tenho uma pergunta sobre os scripts paralelos do Linux:

Contexto: preciso processar muitos arquivos .dat

Código que tenho até agora:

#!/bin/bash
#PBS -S /bin/bash
# set parallel parameters 
#PBS -r n 
#PBS -l walltime=2:00:00 
#PBS -l procs=298 
#PBS -l pmem=1600m 
#PBS -m bea 
#PBS -M [email protected]
#PBS -N FileName

cd /home/user/Data/
# start matlab
module load matlab/2015b
# Choose the MCR directory according to the compiler version used
MCR=/global/software/matlab/mcr/v90
# set up matlab compiler
mcc -R -nodisplay -R -singleCompThread -R -logfile,ResultsOutput.txt -K -m -v -w enable FileName.m

# cycle through all files
# does the for loop send it to different nodes?
for fileID in *.dat
do
  echo "Running on host: 'hostname'"
  echo "Current working directory is 'pwd'"
  echo "Starting run at: 'date'" 
  echo "$fileID"

  ./run_FileName.sh $MCR $fileID > Results_${PBS_JOBID}.out &

  echo "Job finished at: 'date'"    
done

precisa manter os resultados ??

    
por Dan 26.01.2017 / 22:31

1 resposta

3

Acho que você deve olhar para GNU Parallel link .

parallel "./run_FileName.sh $MCR {} > Results_${PBS_JOBID}.out" ::: *.dat

E você provavelmente quer usar a opção --joblog e --sshloginfile também.

    
por 26.01.2017 / 23:03