问题标签 [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 回答
57 浏览

c++ - 在分布式文件系统上并行导出 ASCII 文件

我需要在分布式文件系统上导出 ASCII 文件。目前我在每个节点上以附加模式打开文件流到同一个文件。然后我按节点顺序导出所有数据。该解决方案能否在分布式文件系统上正常工作,还是必须使用 MPI-I/O?看来我不是很了解并行文件系统的概念。

PS 该文件必须是 ASCII。

0 投票
1 回答
160 浏览

fortran - 避免在带有标题的数据文件中重复 MPI_File_set_view

我在某种程度上本着 MPI I/O 的精神,从https://github.com/LadaF/PoisFFT/blob/master/src/testmpi.f90(在最后)对一个简单的 MPI-IO 子程序进行了现代化改造,混合单一- 和多进程输出。我的意图是在一个更重要的程序中使用这个过程。save_vtk()

我到达了这段代码,它产生了正确的输出(删除了错误检查):

这只做了一次,对性能来说是微不足道的:

这做了很多次:

代码首先测试文件是否已经存在,如果是,则将其删除并再次打开。完整的可测试代码位于新的 git 分支中(https://github.com/LadaF/PoisFFT/blob/new_mpi_io/src/testmpi.f90)。

我想摆脱重复的MPI_File_set_view()或至少MPI_Barrier()介于两者之间的,因此立即为标头和数组块的根进程设置视图,然后让根进程同时写入标头和数组块到视图中。

那可能吗?

0 投票
1 回答
388 浏览

io - 在 Fortran 中使用 MPI I/O 读取未格式化的流二进制文件

我有一个大小约为 60GB 的未格式化流二进制文件,我在串行代码中读取如下;

由于读取此文件需要大量时间,我想使用 MPI I/O 并行化这部分代码。我正在尝试使用mpi_file_set_viewmpi_file_read选项来做到这一点。有人可以指导我有效地做到这一点吗?在读取并存储参数后,p(nsea,nsea)我想在其余代码中传递整个数组以进行一些矩阵运算。

0 投票
1 回答
354 浏览

file - 使用带有共享文件指针的 MPI-IO 将巨大的数组写入单个文件

我正在尝试使用带有共享文件指针的 MPI-I/O(OpenMPI 实现)将几个长分布式数组写入单个文件。我收到以下错误消息

lseek:无效的参数

写入失败

我准备了一个简化的代码片段来重现该问题。

看起来MPI_Offset只是int第二次调用MPI_File_write_ordered导致MPI_Offset溢出,偏移量变为负数。相当有趣的是,同样数量的数据的写入可以通过乘以globalUpperBnd2 并且只调用MPI_File_write_ordered一次就可以成功。所以它看起来像是MPI_File_write_ordered以某种方式避免了偏移溢出。

我使用 64 位 OpenMPI 库。

这种情况有什么解决方法吗?

0 投票
1 回答
216 浏览

c - MPI_File_write C

我必须使用 MPI 从 3D 矩阵计算浓度值。

我根据我将使用的 proc 数量的值将我的矩阵分成几块。

我得到了独立工作的较小的 3D 矩阵,但我希望它们计算的浓度值写入同一个文件中,例如 0 到 n-1 行由 proc 0 写入,n 到 2n-1 由 proc 1 写入。 .

我知道我可以在 mpi_file_write_at 函数中使用偏移量来执行这样的事情,但我不知道如何实现它。

我知道一个简单的解决方案是让 proc 0 打开文件,写入并关闭它,然后 proc 1 打开。

不要介意代码本身,因为它还没有完成

0 投票
2 回答
384 浏览

mpi - MPI-IO 以非连续模式写入文件

我在编写将以特定模式编写的并行 MPI I/O 程序时遇到问题。我能够让进程 0 写入整数 0-9,进程 1 写入整数 10-19,进程 2 写入整数 20-29,等等。

以下是完成此操作的代码:

但是,我对如何产生以下结果感到困惑:

在过去的几个小时里,我在在线查找示例和文档时尝试使用MPI_File_set_view,但无法使其正常工作。有人可以指导我正确的方向吗?

0 投票
1 回答
316 浏览

c - 使用 MPI_Type_create_subarray 做二维循环分布的例子

我想举一个例子,展示如何使用MPI_Type_create_subarray为大型矩阵构建二维循环分布。

我知道这MPI_Type_create_darray会给我二维循环分布,但它与SCALAPACK过程网格不兼容。

我会使用MPI_Type_create_subarray矩阵进行二维块循环分布并将其传递给SCALAPACK例程。

我可以举个例子吗?

0 投票
1 回答
177 浏览

fortran - MPI_FILE_WRITE_ORDERED overwrites previous written data

I have the following code

What I am seeking for is a combination of writing to file by only one processor and sometimes by them all. As you see in this example, I firstly want to write de by the root rank only, and thereafter dd by all processors.

Write now, it seems that my de is being overwritten

As you can see I tried to offset it by querying the size of the file and do a MPI_FILE_SEEK, but it does not seem to help Does anybody have an idea.

I am using IFORT v19

0 投票
0 回答
48 浏览

view - 使用 mpi_type_create_subarray 收集分布式数据

我正在编写一个需要将分布式数据写入单个文件的 mpi 代码。当我检查子数组函数时,子数组函数运行良好。但是如果使用文件集视图功能来收集数据,文件包括数据正确数据和 NaN 或一些垃圾数据,如下所示。

0.2317786220294740E-309 NaN 0.2317786709764340E-309 0.2317786698253895E-309 0.0000000000000000E+00 0.0000000000000000E+00 0.2317786820155404E-309 0.6953355807072957E-309 0.2317786698253895E-309 0.2317786820155404E-309 0.2317786698250041E-309 0.2317786836681109E-309 0.2073889954983216E-316 0.6953355807081653 E-309 0.2317786674551244E-309 0.0000000000000000E+00 0.0000000000000000E+00 0.0000000000000000E+00 0.2317788916456275E-309 0.0000000000000000E+00 0.0000000000000000E+00 0.6953355807081653E-309 0.2073889954983216E-316

我该如何解决?

0 投票
1 回答
49 浏览

c++ - 等待 MPI-IO 在 MPI_File_open 上同步的进程旋转

我有一些设置,其中所有进程都获得了连续的工作块,并且我想在最后将所有输出一起保存为单个文件,如下所示:

但是,有时工作不平衡,一半的流程可以在另一半之前完成工作时间。据我所知,这些进程继续使用 100% 的 CPU 旋转数小时,直到所有进程达到MPI_File_open. 这显然是不可取的。如果我希望输出最终成为一个文件,那么这种情况下的最佳做法是什么?