假设2个进程正在参与.过程0(等级0)具有
A = { a d
b e
c f
}
Run Code Online (Sandbox Code Playgroud)
和进程1(排名1)有
A = { g
h
i
}
Run Code Online (Sandbox Code Playgroud)
我希望两个处理器都将这些列发送到0级,以便排名0在另一个2D阵列中具有以下内容.
B = { a d g
b e h
c f i
}
Run Code Online (Sandbox Code Playgroud)
我为MPI_Gatherv创建了一个新的列数据类型,我正在尝试以下代码,这让我无处可去.
我的具体问题是:
谢谢.
这是我的代码:
#include <stdio.h>
#include <mpi.h>
int main(int argc, char *argv[])
{
int numprocs, my_rank;
long int i, j;
MPI_Status status;
char **A;
char **B;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
if(my_rank == 0)
{
A = (char **)calloc((3), sizeof(char *));
B …Run Code Online (Sandbox Code Playgroud) 假设进程A分配了一些存储一些数据的内存.假设它是一组键 - >值对.创建这些键 - >值对是很昂贵的.所以,我想分配内存,即使进程A在重新启动时因某种原因而死,它也应该能够在RAM中访问这些数据.我知道我可以将数据存储到文件中,并在A重新启动时将其读回.如果可用内存量不是问题,我想探索是否有其他方法可用.
是否存在一种机制(api)来分配内存,使其固定在内存中直到释放.如果没有,是否有可能通过采用共享内存技术来实现这一点.例如,2进程分配和共享相同的内存,因此即使一个进程终止,内存也不会被释放,因为另一个仍处于活动状态.重新启动死进程后,它是否可以重新获得对该共享内存的访问权限?如果有,怎么样?
最后,如果这是不可能的,我很好奇为什么内核不提供这样的机制?