mpirun未将标准输入传递给fortran
试图在一个新集群上运行一些代码,但是我在通过mpirun将一些数据传递到fortran代码中时遇到了一些问题。请注意,这段代码已经在以前的集群上运行过,但是这个集群似乎有所不同 集群正在通过BSUB/LSF运行作业提交,我已经尝试使用mpif90的ifort和gfortran版本编译fortran代码 具体来说,我有一份工作需要知道它的名字。我通过作业提交脚本中的一个HEREDOC语句传递它,如下所示(注意,在实际代码中,它是一个数组作业,每个个体都需要传递其唯一标识符): 但是,标准输出中没有任何结果,代码无限期挂起(直到墙时间结束) 请注意,我还尝试将输入输入输入到文件中,并通过BSUB中的-I标记传递它:mpirun未将标准输入传递给fortran,fortran,mpi,stdin,lsf,Fortran,Mpi,Stdin,Lsf,试图在一个新集群上运行一些代码,但是我在通过mpirun将一些数据传递到fortran代码中时遇到了一些问题。请注意,这段代码已经在以前的集群上运行过,但是这个集群似乎有所不同 集群正在通过BSUB/LSF运行作业提交,我已经尝试使用mpif90的ifort和gfortran版本编译fortran代码 具体来说,我有一份工作需要知道它的名字。我通过作业提交脚本中的一个HEREDOC语句传递它,如下所示(注意,在实际代码中,它是一个数组作业,每个个体都需要传递其唯一标识符): 但是,标准输出中没有
#!/bin/bash
#BSUB -q queuename
#BSUB -n 2
#BSUB -i jobname.i
#BSUB -o jobname.job.o%J
#BSUB -J jobname.job
#BSUB -e jobname.job.e%J
#BSUB -W 1:00
cd /workingdirectory/
mpirun -lsf /workingdirectory/jobname.exe
其中jobname.i是:
jobname
还是没有快乐。计算当然可以访问存储,就像我将fortran代码更改为:
include 'mpif.h'
integer num_procs,n_ranks,ierr
character name*7
call MPI_Init (ierr)
call MPI_Comm_rank (MPI_COMM_WORLD,n_ranks,ierr)
call MPI_Comm_size (MPI_COMM_WORLD,num_procs,ierr)
if (n_ranks == 0) then
open (5,file='jobname.i',status='unknown')
read (5,'(a7)') name
write(*,2000) name
end if
2000 format(a7)
那么它工作得很好。有什么建议吗?您使用哪个MPI库?为什么要使用它?这是一个集中管理的系统,所以在很大程度上我使用的是他们给我的,但它看起来像:IBM平台MPI社区编辑关于第二个问题,我想传递文本“jobname”,而不是传递一个内有文本“jobname”的文件。我相信如果我使用<,它将需要一个文件,而我会在这里的某个地方查找,但尝试用谷歌搜索更多,这只是第一次快速查找。但是命令行参数对我来说似乎要好得多。
jobname
include 'mpif.h'
integer num_procs,n_ranks,ierr
character name*7
call MPI_Init (ierr)
call MPI_Comm_rank (MPI_COMM_WORLD,n_ranks,ierr)
call MPI_Comm_size (MPI_COMM_WORLD,num_procs,ierr)
if (n_ranks == 0) then
open (5,file='jobname.i',status='unknown')
read (5,'(a7)') name
write(*,2000) name
end if
2000 format(a7)