Fortran Coder

标题: error #6404 [打印本页]

作者: xiaobai01    时间: 2023-5-25 22:35
标题: error #6404
本帖最后由 xiaobai01 于 2023-5-25 22:40 编辑

各位大佬,你们好!我最近编译一个Fortran代码,遇到一个问题error #6404: This name does not have a type, and must have an explicit type.   [MSTR]问题出在第456,457行
IF (allocated(Mstr))    deallocate ( Mstr )IF (allocated(Mend))    deallocate ( Mend )
如果我把这两行注释掉,并添加到subroutine allocate_storage子例程以内,可以编译成功,但跑的时候会出现并行错误。我猜可能不能这么处理。请问有什么更好的办法吗?我查了fortran90/95的书,但仍看不出有啥错误。我对fortran不是很熟悉,期待您们的帮助,非常感谢!!这段代码在附件里面456,457行




mod_storage.F

16.33 KB, 下载次数: 3


作者: 风平老涡    时间: 2023-5-25 22:59
本帖最后由 风平老涡 于 2023-5-25 23:11 编辑

Mstr, Mend数组是local to allocate_storage子例程, 在deallocate_storage子例程没有定义。 可以把这两个数组定义在 module中。

作者: xiaobai01    时间: 2023-5-27 10:11
本帖最后由 xiaobai01 于 2023-5-27 10:16 编辑
风平老涡 发表于 2023-5-25 22:59
Mstr, Mend数组是local to allocate_storage子例程, 在deallocate_storage子例程没有定义。 可以把这两个数 ...

谢谢您的建议!Mstr,Mend放到模块中后,这个变量与其它模块的变量同名冲突。我肯定这两个不是一个变量。局部变量Mstr,Mend在子例程deallocate释放内存应该是可行的。这样,出现的并行错误应该不是由于把Mstr,Mend数组放到子例程里引起的。那么,如何查找和调试并行错误呢?下门是我的日志文件:DEF_GST_NF90- creating checkpointing file, Grid 01: gyre3d _gst.nc
Abort(671684355) on node 3 (rank 3 in comm 0): Fatal error in PMPI_Allreduce:Invalid datatype,error stack :
PMPI_Allreduce(432): MPI_Allreduce (sbuf=0x7ffeab616920,rbuf=0x7ffeab616910,count=1,datatype=INVALID DATATYPE, op=op=0x0,comm=MPI_COMM_WORLD) failed
PMPI_Allreduce (375) : Invalid datatype
Abort (201922307) on node 1 (rank 1 in comm 0): Fatal error in PMPI_Allreduce: Invalid datatype,error stack :
PMPI_Allreduce(432): MPI_Allreduce (sbuf=0x7ffee64f94a0,rbuf=0x7ffee64f9490,count=1, datatype=INVALID DATATYPE, op=op=Ox0,comm=MPI_COMM_WORLD) failed
PMP工_Allreduce (375): Invalid datatype








欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2