我试图交换数据(30个字符) b/w两个进程,以便将MPI_Type_contiguous API理解为:
char data[30];
MPI_Type_contiguous(10,MPI_CHAR,&mytype);
MPI_Type_commit(&mytype);
MPI_Send(data, 3,mytype,1, 99,MPI_COMM_WORLD);但类似的任务可以通过以下方式完成:
MPI_Send(data, 30,MPI_CHAR,1, 99,MPI_COMM_WORLD);我想没有延迟因子优势,因为我在这两种情况下都只使用单个函数调用(或者是吗?)
在MPI_Type_contiguous优于基元类型的情况下(就性能/完成任务的容易程度而言),任何人都能共享这个用例吗?
发布于 2016-05-20 08:10:05
MPI_Type_contiguous用于创建新的数据类型,即现有数据类型的count副本。这对于简化将多个数据类型一起发送的过程非常有用,因为您不需要跟踪它们的合并大小(count在MPI_send中可以由1代替)。
对你来说,我认为完全一样。与您的示例相匹配的使用MPI文本是,
当在MPI操作中使用count参数时,它与构造了相同大小的连续类型相同。 MPI_Send(数据,计数,MPI_CHAR,1,99,MPI_COMM_WORLD); 完全相同 MPI_Type_contiguous(计数,MPI_CHAR,&mytype);MPI_Type_commit(&mytype);MPI_Send(数据,1,mytype,1,99,MPI_COMM_WORLD);MPI_Type_free(&mytype);
您是正确的,因为只有一个实际的通信调用,延迟将是相同的(带宽,发送的字节数相同)。
https://stackoverflow.com/questions/37338808
复制相似问题