栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否可以使用MPI将数据从Fortran程序发送到Python?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否可以使用MPI将数据从Fortran程序发送到Python?

如果要在同一MPI作业中同时启动Fortran程序和Python程序,则必须使用以下方法:

mpiexec -n 1 fortran_program : -n 1 python main.py

Fortran程序将变为MPI等级0,而Python程序将变为MPI等级1。您还可以启动每个可执行文件中的多个,例如:

mpiexec -n 2 fortran_program : -n 4 python main.py

排名0和1来自Fortran程序,排名2至5-来自Python。

还要注意,

comm.recv()
在mpi4py其他通信方式,与小写字母(启动
comm.send()
comm.irecv()
等),引擎盖下使用泡菜和实际上序列化Python对象进行操作。这与Fortran代码发送的字符数组不兼容。你必须要使用以大写字母(启动通信方式
comm.Send()
comm.Recv()
等等)上与NumPy阵列操作和接收显式类型信息。不幸的是,我的Python功能很弱,我现在无法提供完整的工作示例,但是MPI部分应该是这样的(未经验证的代码):

# Create an MPI status objectstatus = MPI.Status()# Wait for a message without receiving itcomm.Probe(source=0, tag=22, status=status)# Check the length of the messagenchars = status.Get_count(MPI.CHARACTER)# Allocate a big enough data array of charactersdata = np.empty(nchars, dtype='S')# Receive the messagecomm.Recv([data, MPI.CHARACTER], source=0, tag=22)# Construct somehow the string out of the individual chars in "data"

在Fortran代码中,您必须指定目标等级1(如果您正在运行一个Fortran可执行文件和一个Python可执行文件)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455897.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号