2017-07-23 20 views
0

我正在尝试读取群集环境中的输入文件。不同的节点将读取它的不同部分。然而这些部分并没有明确的分离,而是交错在一个“网格”中。集群节点需要读取输入文件的不同部分 - 如何组织它?

例如,具有16个元件(假设整数)的文件:

0 1 2 3 
4 5 6 7 
8 9 A B 
C D E F 

如果使用四个节点,第一节点会读取左上角的2×2平方(0,1,4,5),第二个节点将读取的右上2x2平方等。

我该如何处理?我可以使用MPI或OpenMP。我有两个想法,但我不知道哪个更好:

  1. 每个节点都会打开文件并拥有自己的句柄。每个节点将独立读取文件,仅使用所需文件的一部分,并跳过其余部分。在这种情况下,使用fopenMPI_File_open会有什么区别?哪一个会更好?

  2. 使用一个节点读取整个文件并将输入的每个部分发送到需要它的节点。

回答

1

关于你的问题,

我不会建议你提到的第二个选项。即使用一个节点来读取并分配零件。原因是这很慢..特别是如果文件很大。这里你有两倍的开销,首先是让其他进程等待,然后是发送读取的数据。所以显然不适合我。

关于你的第一个选项,使用fopen和MPI_Fole_open没有太大的区别。但是在这里,我仍然会建议MPI_File_open利用某些设施,如非阻塞I/O操作和共享文件指针(使生活变得容易)

相关问题