问题标签 [mpi-io]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
187 浏览

c - 什么会使 MPI_File_write_all 因浮点异常而失败?

我有一个电话MPI_File_write_all

的大小buf可以变化,100^3 只是一个例子。在某些我仍然没有完整处理的情况下,调用MPI_File_write_all失败并出现浮点异常。我能测试的所有东西——buf数组、值data_size——都检查正常。

知道是什么原因造成的吗?无论优化级别如何,Cray 和 gnu 编译器都会出现同样的错误。

抱歉,我没有可以重复问题的小代码。将其剥离为基本要素仍然会为该页面留下太大的代码。

0 投票
2 回答
997 浏览

parallel-processing - 使用 MPI-IO 读取文本文件?

我有一个文本文件,其中包含一个带有矩阵尺寸的标题,然后是矩阵。这是一个 3x3 矩阵的示例:

我不断地使用 MPI-IO 获取垃圾值,发现它只适用于二进制文件,而不适用于文本文件。

我以为我会读入一个字符流并转换为整数,但我不确定如何解决这个问题,因为矩阵元素的位数是可变的。我真的不确定如何解决这个问题?

0 投票
3 回答
1149 浏览

c - 使用 MPI-IO 写入多个共享文件

我正在运行具有数千个 MPI 进程的模拟,并且需要将输出数据写入一小组文件。例如,即使我可能有 10,000 个进程,我只想写出 10 个文件,每个文件写入 1,000 个(在某个适当的偏移量处)。AFAIK 正确的方法是为将写入相同文件的进程组创建一个新的通信器,使用 为该通信器打开一个共享文件,MPI_File_open()然后使用MPI_File_write_at_all(). 那是对的吗?以下代码是我编写的一个玩具示例:

我可以使用 编译mpicc file.c -lm并运行 20 个进程mpirun -np 20 a.out,并且我得到了预期的输出(四个文件,每个文件有五个条目),但我不确定这是否是技术上正确/最优化的方法。有什么我应该做的不同的事情吗?

0 投票
0 回答
300 浏览

fortran - 在 Fortran 中使用 MPI 从文件中读取数据

我想将一些 .dat 文件中的数据读取到 Fortran 代码以进行后处理。作为一个测试用例,我只是将一个处理器用于 MPI,并尝试将单个数据文件读取到我的代码中。数据文件内容如下:

但是,应该存储此数据文件内容的矩阵(在本例中为 Vn)显示所有 0 值。从数据文件读取并存储到矩阵的代码的相关部分如下:

0 投票
0 回答
310 浏览

fortran - 如何在 Fortran 中读取使用 MPI-IO 写入的二进制数据?

我想将 Fortran 代码中的一些输出数据读出到数据文件中以进行后处理。给我的代码使用 MPI 写入这些数据文件。对于最基本的情况,当处理器的数量应该是 1 和Nx, Ny, Nz are all set to 1 and l is 3时,写入数据文件的输出应该都是 1。但是,写入数据文件的输出是一些不可读的格式,如以下:

下面附加了写入数据文件的代码的相关部分。

0 投票
1 回答
313 浏览

fortran - 使用 MPI I/O 读取二进制文件时结果不正确

我是 MPI 新手,正在努力阅读二进制文件。具体来说,我有一个 $198\times 50\times 50$ 的整数数组(具体来说是 16 位整数)存储在二进制文件中。我想使用 2 个计算节点来处理这个文件。所以有两个 MPI 进程,每个进程将处理一半的输入。我正在使用函数 MPI_FILE_READ_AT 来读取各个区域。我希望数组值填充我传递给函数调用的变量/参数“桶”。但是从“桶”条目中打印出来的健全性检查告诉我桶中的值都是不正确的。我觉得我的论点有问题。

0 投票
1 回答
148 浏览

fortran - 如何使用无序的位移数组创建 mpi_type_indexed

我有一些数据要写入文件的特定位置。每个位置都以数组的形式提供给我。目前,我通过使用 mpi_file_write_at 在特定位置写入每个变量来编写它们。位置既不是连续的也不是有序的,所以程序在文件中来回移动。

但我知道获得良好性能的推荐方法是使用文件视图和集体编写例程。所以我认为解决方案是创建一个 mpi_type_indexed 数组 ALL_POS 用作位移数组。然后用这个类型用mpi_file_set_view来描述文件。但是当我这样做时,每次数组未排序时程序都会崩溃。

下面是一个重现我的问题的最小示例。程序编译但有段错误。如果将 DISPLACEMENTS(3) 的值更改为优于 DISPLACEMENTS(2) 的值,程序将毫无问题地运行。(有时它似乎也适用于某些低于 DISPLACEMENTS(2) 的值,例如 99)

那么是否可以创建具有无序位移数组的索引类型并将其用作视图?我在文档中找不到任何相反的说法。唯一的限制似乎是在 blocklenghts 数组上,它必须是正整数。

0 投票
0 回答
153 浏览

io - 如何使用 Fortran 使用 MPI I/O 将多个变量写入文件

下面的代码给了我 4 个变量,用 10 列保存 4 个不同的行,而我需要在 10 行中保存 4 列。我正在使用 hexdump 语法从文件中提取

使用 Hexdump 命令:

如果您尝试在转换后打开 hextest1.dat,它似乎就像我发布的那样。

0 投票
1 回答
602 浏览

fortran - 我在滥用 mpi_file_write_all 吗?

我有一段代码在使用 MPI-IO 的文件中写入数据。当我使用它时效果很好mpi_file_write,但如果我切换到集体mpi_file_write_all我会得到错误的结果。除了调用 write 函数来使用集体写作例程之外,我是否需要进行更多更改?

mpi_file_write文件包含预期的结果,4 行形式为“1 2 3 4”。

但与mpi_file_write_all结果文件不同:数据顺序错误:

所以我想知道我是否做错了什么。mpi_file_writempi_file_write_all我错过的有什么区别吗?

我使用的是 OpenMPI 3.0 版。

0 投票
1 回答
668 浏览

c - MPI_File_read_at_all 在尝试读取大文件时给出无效的计数参数

我写了一个简单的 C 程序来尝试 MPI-IO;程序读取一个文本文件,每个进程输出它读取的部分的第一个字符。该程序适用于不同大小(100KB、30MB、500MB、2.5GB),但当我尝试 7.5GB 文件时,出现此错误:

我尝试了集体方法(MPI_File_read_at_all)和独立方法(MPI_File_read),它们都无法读取7.5GB的文件。这是负责阅读的代码:

任何想法为什么在尝试 7.5GB 文件时会出现此错误?

提前致谢!