问题标签 [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.
c++ - 在分布式文件系统上并行导出 ASCII 文件
我需要在分布式文件系统上导出 ASCII 文件。目前我在每个节点上以附加模式打开文件流到同一个文件。然后我按节点顺序导出所有数据。该解决方案能否在分布式文件系统上正常工作,还是必须使用 MPI-I/O?看来我不是很了解并行文件系统的概念。
PS 该文件必须是 ASCII。
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()
介于两者之间的,因此立即为标头和数组块的根进程设置视图,然后让根进程同时写入标头和数组块到视图中。
那可能吗?
io - 在 Fortran 中使用 MPI I/O 读取未格式化的流二进制文件
我有一个大小约为 60GB 的未格式化流二进制文件,我在串行代码中读取如下;
由于读取此文件需要大量时间,我想使用 MPI I/O 并行化这部分代码。我正在尝试使用mpi_file_set_view
和mpi_file_read
选项来做到这一点。有人可以指导我有效地做到这一点吗?在读取并存储参数后,p(nsea,nsea)
我想在其余代码中传递整个数组以进行一些矩阵运算。
file - 使用带有共享文件指针的 MPI-IO 将巨大的数组写入单个文件
我正在尝试使用带有共享文件指针的 MPI-I/O(OpenMPI 实现)将几个长分布式数组写入单个文件。我收到以下错误消息
lseek:无效的参数
写入失败
我准备了一个简化的代码片段来重现该问题。
看起来MPI_Offset
只是int
第二次调用MPI_File_write_ordered
导致MPI_Offset
溢出,偏移量变为负数。相当有趣的是,同样数量的数据的写入可以通过乘以globalUpperBnd
2 并且只调用MPI_File_write_ordered
一次就可以成功。所以它看起来像是MPI_File_write_ordered
以某种方式避免了偏移溢出。
我使用 64 位 OpenMPI 库。
这种情况有什么解决方法吗?
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 打开。
不要介意代码本身,因为它还没有完成
mpi - MPI-IO 以非连续模式写入文件
我在编写将以特定模式编写的并行 MPI I/O 程序时遇到问题。我能够让进程 0 写入整数 0-9,进程 1 写入整数 10-19,进程 2 写入整数 20-29,等等。
以下是完成此操作的代码:
但是,我对如何产生以下结果感到困惑:
在过去的几个小时里,我在在线查找示例和文档时尝试使用MPI_File_set_view
,但无法使其正常工作。有人可以指导我正确的方向吗?
c - 使用 MPI_Type_create_subarray 做二维循环分布的例子
我想举一个例子,展示如何使用MPI_Type_create_subarray
为大型矩阵构建二维循环分布。
我知道这MPI_Type_create_darray
会给我二维循环分布,但它与SCALAPACK
过程网格不兼容。
我会使用MPI_Type_create_subarray
矩阵进行二维块循环分布并将其传递给SCALAPACK
例程。
我可以举个例子吗?
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
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
我该如何解决?
c++ - 等待 MPI-IO 在 MPI_File_open 上同步的进程旋转
我有一些设置,其中所有进程都获得了连续的工作块,并且我想在最后将所有输出一起保存为单个文件,如下所示:
但是,有时工作不平衡,一半的流程可以在另一半之前完成工作时间。据我所知,这些进程继续使用 100% 的 CPU 旋转数小时,直到所有进程达到MPI_File_open
. 这显然是不可取的。如果我希望输出最终成为一个文件,那么这种情况下的最佳做法是什么?