gpt4 book ai didi

java - 发送/接收 MPI-Fortran-Java

转载 作者:行者123 更新时间:2023-12-02 11:05:12 24 4
gpt4 key购买 nike

我有一个 Open-MPI 和 Java 中的发送/接收实现。目标是将 Fortran 字符集发送到 Java。当 Java 收到此字符串时,它会打印以下结果。 Result send/receive

我的 Fortran 代码是:

program simple4 
implicit none
include 'mpif.h'

integer ierr,my_rank,size
integer src, dest, tag, position, charSize
integer status(MPI_STATUS_SIZE)
CHARACTER*80 TEXT

call mpi_init(ierr)
call mpi_comm_rank(MPI_COMM_WORLD,my_rank,ierr)
call mpi_comm_size(MPI_COMM_WORLD,size,ierr)

src = 0
dest = 1
tag = 999

if(my_rank.eq.0) then
position = 0
TEXT = "PRO"
call MPI_SEND(TEXT, 3, MPI_CHARACTER, dest, tag, MPI_COMM_WORLD, ierr)
else
print *, "Fortran process ", my_rank
end if

call mpi_finalize(ierr)

end

我的Java代码是:

....
char[] textChar = new char[3];
MPI.COMM_WORLD.recv(textChar, 3, MPI.CHAR, sourceRank, messageTag);
String text = String.copyValueOf(textChar);
System.out.println("Java - Text receive: " + text);

我的代码会出现什么问题?Fortran 和 Java 就不能这样通信了吗?另一种解决方案是什么?

最佳答案

根本原因是 Fortran CHARACTER 采用 ASCII 格式,而 Java String 采用 Unicode 格式,因此涉及一些额外的步骤。

这是您可以用 Java 执行的操作的片段

byte[] textByte = new byte[3];
MPI.COMM_WORLD.recv(textByte, 3, MPI.BYTE, sourceRank, messageTag);
String text = new String(textByte, java.nio.charset.Charset.forName("UTF-8"));
System.out.println("Java - Text receive: " + text);

关于java - 发送/接收 MPI-Fortran-Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51023268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com