Mpi 如何从多个阵列中调用allgatherv

Mpi 如何从多个阵列中调用allgatherv,mpi,Mpi,情况是这样的:每个任务必须共享来自3个不同阵列(a1、a2、a3)的可变数量的子阵列的数据,这些阵列都是相同类型的,每个子阵列的长度不同。 我目前的解决方案是手动打包,最终通过单个allgatherv共享单个阵列。 是否可以使用派生数据类型来实现这一点,以避免手动打包?您完全可以在非根列组上使用派生数据类型。在根级别上,这取决于数据布局的规则性。如果您希望得到更明确的答案,请发布一些代码。数据布局如下所示:task0:111111 2233333122233 task1:nothing task

情况是这样的:每个任务必须共享来自3个不同阵列(a1、a2、a3)的可变数量的子阵列的数据,这些阵列都是相同类型的,每个子阵列的长度不同。 我目前的解决方案是手动打包,最终通过单个allgatherv共享单个阵列。
是否可以使用派生数据类型来实现这一点,以避免手动打包?

您完全可以在非根列组上使用派生数据类型。在根级别上,这取决于数据布局的规则性。如果您希望得到更明确的答案,请发布一些代码。数据布局如下所示:task0:111111 2233333122233 task1:nothing task2 1111111111111111111 22233关于我希望结束的每个任务(因此使用集合):111111 22333331223331111111111122233,其中1是a1的连续元素,2是a2的连续元素,和a3的3。对不起,我只懂代码:-)