如果我有一个数组A100100,我如何为6个边缘子数组(重影单元)创建一个远程内存访问窗口,特别是对于A和A100。在MPI-1中,我创建了一个向量类型来发送/接收重影单元。在MPI-2和MPI -3中,我需要公开整个数组还是只公开重影单元?当然,如果可能的话,后者会更好。
发布于 2013-11-08 05:37:55
MPI RMA窗口是内存中的连续区域,出于性能原因,实现可能需要专门使用MPI_ALLOC_MEM来分配它们。3-D阵列6个边中的4个边界单元在内存中不是连续的。某些实现还可能要求窗口在页面或其他类型的边界上开始对齐。因此,您必须注册一个跨越整个数组的窗口。
虽然在技术上可以为A和A99公开两个单独的窗口,并且这些窗口不会公开数组的任何其他部分,但对于A、A等来说,这是不可能的,因为它们具有不连续的字符。
我建议您使用MPI_ALLOC_MEM分配A (如果使用C/C++编程,则使用MPI_Alloc_mem )。然后,您可以在MPI_GET和MPI_PUT中使用适当的矢量类型,以便轻松访问远程光环单元以及要复制的本地单元。
https://stackoverflow.com/questions/19844483
复制相似问题