MPI并行写入TIFF文件

时间:2014-01-28 14:17:53

标签: mpi tiff

我正在尝试用MPI代码编写TIFF文件。不同的处理器具有不同的图像部分,我想将图像并行写入文件。

写入失败,只有第一个处理器可以写入。

我该怎么做?

我的实施没有错误,只是它不起作用 我在每个处理器上使用h=TIFFOpen(file, "a+")打开相同的文件(我不确定这是否是正确的方法),然后负责目录的每个处理器将使用{{{} { 1}},然后将写入每个目录的内容。我将以TIFFSetDirectory(h, directorynumber)完成。结果将是写在文件上的第一个目录。

我认为我需要使用MPI_IO打开文件,但这样做不是TIFFOpen吗?

1 个答案:

答案 0 :(得分:1)

不同的MPI任务是独立的程序,从操作系统的角度来看,它们运行在独立的主机上。在您的情况下,TIFF库不是为处理并行操作而设计的,因此打开文件将导致第一个进程成功,所有其余的都失败,因为他们发现文件已经打开(在共享文件系统上)。

除非您正在处理巨大的图像(例如:天文图像),其中执行并行I / O的性能非常重要(但是您需要一个支持它的文件系统...我知道IBM GPFS),我会避免使用MPI_IO编写自定义TIFF驱动程序。

相反,典型的解决方案是使用rank == 0收集(MPI_Gather())进程上的图像部分,并让它只保存tiff文件。