使用qsub在循环中编译程序

时间:2013-10-07 00:17:33

标签: bash makefile intel-fortran qsub

我想在bash for循环中编译程序。当我从命令行运行程序时,它将编译,但是当我使用qsub时,它不会编译。

我有什么遗失的吗?

此致

约翰

Bash文件

  #!/bin/bash
  #$ -N runTest
  #$ -m e
  #$ -r y

  cd /afs/crc.nd.edu/user/private/NDPICMCC/SAFECODE

  thisDir="SAFECODE"
  t=2000

  originalGUILine="pres = 7.6E1"
  oldGUILine="$originalGUILine"
  GUIfile="GUIVars.f90"

  for (( i = -3 ; i <= 1 ; i=i+1 ))
    do
        p="7.6E$i"
        newGUILine="pres = $p"
        sed -i "s/$oldGUILine/$newGUILine/g" "$GUIfile"
        oldGUILine="$newGUILine"

        make clean >& /dev/null
        make 1D >& /dev/null
        make 1D

        ./PressurePIC

        cp "Anode_ele_eng.csv" "../results/T_${t}_P_${p}_Energies.csv"
    done

  sed -i "s/$oldGUILine/$originalGUILine/g" "$GUIfile"

生成文件

  CC=ifort
  OPTIONS = -warn noalign -autodouble
  PRNG = luxury.f90
  MAIN = NDPIC1D.v0.f90 GUIVars.f90 GlobalVars.f90 StatisticalDistribution.f90 Emission.f90
  TODO = ParticleInCell.f90 MonteCarloCollision.f90 Transformations.f90
  EXE = PressurePIC

  all:
    @$(CC) $(PRNG) $(MAIN) $(TODO) -o $(EXE) $(OPTIONS)

  1D:
    @$(CC) $(PRNG) $(MAIN) $(TODO) -o $(EXE) $(OPTIONS)

  2D:
    @$(CC) $(PRNG) $(MAIN) $(TODO) -o $(EXE) $(OPTIONS)

  clean:
    @rm *.mod $(EXE)

  run:
    @./$(EXE)

  info:
    @echo $(EXE)

1 个答案:

答案 0 :(得分:1)

我不确定你使用的qsub有什么味道,所以这可能没有用......

尝试包含

#$ -V

在脚本开头。在某些处理qsub的系统上,它确保将环境变量从您的环境导出到最终运行脚本的环境中。这些环境通常不一样。