1
我的MPI应用程序有一些过程可以产生一些大的数据。假设我们有N + 1个进程(一个用于主控,另一个用于工作),每个工作进程都会生成大量数据,现在只需写入普通文件file1,file2,...,fileN。每个文件的大小可能会大不相同。现在我需要发送所有的fileM来排序M进程来完成下一个任务,所以就像所有的数据传输一样。MPI大数据全部传输
我的问题是我应该如何使用MPI API有效地发送这些文件?我以前使用Windows共享文件夹来传输这些文件,但我认为这不是一个好主意。
我想到MPI_file和MPI_All_to_all,但这些函数似乎不适合我的情况。简单的MPI_Send和MPI_Recv似乎很难使用,因为每个进程都需要传输大量数据,而现在我不想使用分布式文件系统。
您目前正在将N个文件写入每个进程本地的磁盘,还是他们都住在同一个地方?我认为你将数据写入磁盘,因为它不适合内存? – 2010-06-13 09:01:29
我想在集群上运行这个应用程序,所以我需要在不同的机器上传输这些数据,并且数据大小可能不适合内存。 – csslayer 2010-06-13 09:37:31
什么构成“大量”数据? MPI_Send/Recv由MPI_Count参数限制消息大小,该参数是一个32位值。 “大量”数据中有多少32位(4GB)块? 每个等级有多少内存可供使用?这些数据在计算过程中是否存储在内存中? 节点之间的互连是什么?什么是文件系统的互连?很可能,互连结构将比文件系统更快。 – 2010-06-14 13:36:41