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

mpi - 使用 MPI_File_open 时出现分段错误

我正在尝试从文件中读取 MPI 应用程序。集群有 4 个节点,每个节点有 12 个核心。我已经尝试运行一个基本程序来计算排名并且它有效。当我添加 MPI_File_open 时,它会在运行时引发异常

您的一个应用程序进程的错误终止 = 退出代码:139

集群已安装 MPICH2 并具有网络文件系统。我使用不同的参数检查 MPI_File_open,例如 ReadOnly 模式、MPI_COMM_WORLD 等。

我可以将 MPI_File_open 与网络文件系统一起使用吗?

0 投票
1 回答
509 浏览

c++ - GNUPlot 的 MPI IO 格式化

我有一个使用 MPI 的 C++ 程序,我希望每个进程(最多 32 个)写入文件。我正在使用一个小型测试数据集,该数据集由 100 个双打组成,均匀分布在各个流程中。到目前为止,输出的格式如下:

格式化此输出以便 GNUPlot 可以直接解释结果的最佳方法是什么?

0 投票
1 回答
1662 浏览

mpi - MPI_File_open 挂起

我怀疑我没有正确提供文件路径 - 我不是一个 linux 人,所以我不知道真正可能出了什么问题 - 代码:

即使我给出无效路径也会挂起
如果我注释掉 if (!rank)它会崩溃:

另一方面,如果我给它一条路径, sftp://stdxxxxx@linux11.di.uoa.gr/home/users1/stdxxxxx/public_html/grid.txt它会以它快乐的方式到达Cannot open file sftp://stdxxxxx@linux11.di.uoa.gr/home/users1/stdxxxxx/public_html/grid.txt

为什么 ?

在 Linux 机器集群中通过 netbeans 远程运行它。命令 :

/usr/local/mpich2/bin/mpiexec -machinefile 机器 -np 9 "${OUTPUT_PATH}" 84 9 /home/users1/stdxxxxx/public_html/grid.txt

"${OUTPUT_PATH}"是可执行文件

mpirun --versionmpiexec --version导致invalid "local" arg: --version

编辑 :

0 投票
1 回答
2087 浏览

fortran - MPI-IO:写入子数组

我开始使用 MPI-IO 并尝试编写一个非常简单的示例来说明我想用它做的事情;然而,即使它是一个简单的代码,并且我从在这里和那里阅读的示例中获得了一些灵感,我还是遇到了一个我不理解的分段错误。

这段代码的逻辑非常简单:每个线程将处理一个本地数组,它是我要编写的全局数组的一部分。我使用它创建了一个子数组类型MPI_Type_Create_Subarray。然后我只是打开文件,设置视图并尝试写入数据。我在MPI_File_Write_All.

这是代码:

任何帮助将不胜感激!

0 投票
1 回答
1344 浏览

fortran - MPI-IO:MPI_File_Set_View 与 MPI_File_Seek

尝试在 Fortran 90 中使用 MPI-IO 写入文件时遇到问题。如果我执行以下操作,请使用MPI_File_Set_View

我得到一个 69Go 文件,考虑到我在其中写的内容,这个文件太大了。loc_x顺便说一句,如果我增加和,文件的大小不会改变loc_y

但是,如果我使用MPI_File_Seek,效果会更好;创建了一个合理大小的文件,其中包含我要写入的数据

在我看来,这两种方法应该产生相同的东西,特别是第一种方法应该创建一个如此大的文件。

我用 gfortran 4.6.3 和 OpenMPI 1.6.2 编译我的代码。

任何帮助,将不胜感激!

0 投票
1 回答
1132 浏览

io - 使用 MPI-I/O 读取 Fortran 无格式文件中的真实实体

我正在尝试通过 MPI-I/O 读取 CFD 网格文件。该文件是大端格式的 Fortran 无格式格式,它包含整数和实数 *8 的混合变量(文件以块大小的整数开头,后跟该块的 x、y、z 坐标)。我可以设法读取第一个整数,但真正的实体完全错误或不那么准确。所以我简化了代码以重现相同的错误。它以 Fortran 无格式格式将一个实数值写入文件,并尝试从串行和并行(通过 MPI-I/O)中读取它:

如果您使用 big-endian 选项进行编译(我为 Intel 编译器添加了 '-convert big_endian' 选项),Intel MPI 的结果略有不同(这似乎是与字节相关的问题):

如果我放弃大端模式(即,将 MPI_FILE_OPEN 的数据表示替换为“native”+设置 disp=4 以跳过 Fortran 无格式格式的第一个 4 字节记录标记 + 没有额外的编译标志),MPI-I/O 读取完全相同的值。但是,由于网格文件是以大端格式给出的,我必须继续使用“-convert big_endian”选项。

HDF-5 的使用似乎也并不容易,因为文件格式已被其他预处理和后处理代码共享。

有没有人有经验或者知道治疗方法?

最好的,杰夫

0 投票
1 回答
110 浏览

multithreading - 文件的多线程组合(共享内存)

假设我有 N 个文件,格式如下:

一个文件看起来像这样:
每次都有一些具有不同 id 的数据

(每次ID为1-1000的数据都以某种方式(混合)分布在这些N个文件中)

我想合并所有这些 N 个文件,以便我有一个有序的文件:

最终文件:

数据 id 1-1000 的大小约为 100mb,但我有很多次最多占 50 GB 的数据。

我对这个问题的解决方案是这样的,以使其尽可能快:

我在超级计算机节点(例如 24-48 核的 1 台计算机)上使用T 线程(例如)。我已经分配了一个共享内存数组来保存所有 ids 1 - 1000 的数据一次(如果我愿意,也可以更多)

程序:
步骤 1:

  • 每个线程都有一些它打开并拥有的文件。然后每个线程将其在文件中的 id 数据填充到共享数组中。

第2步:

  • 当所有线程最终处理一次时 --> 线程 1 将这个数组以有序的形式写入最终文件。

阿斯达斯

  1. 如果这有效,我会非常感兴趣?并行读取是否无论如何都没有顺序化,所以它根本没有用?我可以在具有超快 SSD 的本地计算机或具有网络存储(Lustres 或 Panasas 文件系统)的集群节点上计算最终文件
  2. 我可以在第 2 步中再次使用所有线程并行写入磁盘,比如说使用 MPI IO(它支持通过偏移量并行写入),或者如何实现?-> C++ 标准库?

感谢您的任何投入!

0 投票
1 回答
578 浏览

c++ - 每个处理器具有不同计数值的 MPI_File_write_all

这可能是一个愚蠢的问题,但是,

我希望处理器在同一个文件中N写入所有不同的内容,以使数据连续。byte countoffset

我想使用MPI_File_write_all(file,data,count,type,status)(单个文件指针,集体,阻塞)功能。

第一个问题每个处理器可以为count参数指定不同的值吗?我找不到 MPI 3.0 参考中提到的任何内容。(我的意图是不可能?)

到目前为止,我发现以下两个问题:

  1. 当我想在 MPI_File_write... 中写入大量MPI_BYTES整数(32 位)count时,函数太少并且当然会溢出!

  2. 我不(不能)/想要在 MPI 中使用派生数据类型,因为如上所述,所有处理器都写了不同byte count的类型,并且类型是MPI_BYTES

感谢您对此主题的任何帮助!

0 投票
0 回答
1146 浏览

c - MPI I/O 在 MPI 中将文件从一个节点发送到另一个节点

我在这里有一个 MPI 代码,我用它来将文件从一个节点传输到另一个节点。但不知何故,我无法在每个节点上的 localscratch 文件夹上运行。例如:我运行代码如下:

代码在 2 个节点 ser010、ser011 上运行,输入文件由进程 0 (ser010) 读取,进程 1 从进程 0 接收数据并作为输出文件写入。

但这在我使用 NFS 时有效。(并行文件系统)。

每个节点(ser010、ser011)都有自己的 localscratch 文件夹(不在 nfs 上)。因此每个节点中的文件不共享。

如何将文件从 ser010 的暂存区发送到 ser011 的暂存区?

请建议。我在这里使用 OpenMPI。

0 投票
1 回答
485 浏览

fortran - mpi file write写入的文件中出现无法识别的字符

我开始为我的分子动力学代码学习 mpi i/o。首先,我尝试运行这段代码:

http://www.mcs.anl.gov/research/projects/mpi/usingmpi2/examples/starting/io3f_f90.htm

编译并运行后,我得到了'testfile'。但是当我'vim testfile'时,我看到很多无法识别的字符,例如'^A^@^@^@^B^@^@^@^C^@^@^@^D^@^@^@ ^E^@^@^@^F^@^@^@^G^@^'。而且我也无法在 gedit 中打开它(它说文件的类型未知)

知道发生了什么吗?我根本没有修改代码。

我在 Ubuntu 上使用了 Open MPI 1.7 和 ifort 13,我的笔记本电脑上的处理器是 intel i7(4 核/8 线程)。我确信 MPI 有效。我在这个测试中使用了 -np = 4。

谢谢