小编Ree*_*eep的帖子

如何从处理器MPI_Gatherv列,其中每个进程可以发送不同数量的列

假设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创建了一个新的列数据类型,我正在尝试以下代码,这让我无处可去.

我的具体问题是:

  1. 我应该如何处理这个问题
  2. 什么应该是send_type和recv_type.
  3. 如何指定位移(如果它们是新数据类型或MPI_CHAR)

谢谢.

这是我的代码:

#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)

c mpi

6
推荐指数
1
解决办法
3289
查看次数

是否可以将持久性内存分配给进程?

假设进程A分配了一些存储一些数据的内存.假设它是一组键 - >值对.创建这些键 - >值对是很昂贵的.所以,我想分配内存,即使进程A在重新启动时因某种原因而死,它也应该能够在RAM中访问这些数据.我知道我可以将数据存储到文件中,并在A重新启动时将其读回.如果可用内存量不是问题,我想探索是否有其他方法可用.

是否存在一种机制(api)来分配内存,使其固定在内存中直到释放.如果没有,是否有可能通过采用共享内存技术来实现这一点.例如,2进程分配和共享相同的内存,因此即使一个进程终止,内存也不会被释放,因为另一个仍处于活动状态.重新启动死进程后,它是否可以重新获得对该共享内存的访问权限?如果有,怎么样?

最后,如果这是不可能的,我很好奇为什么内核不提供这样的机制?

c linux

1
推荐指数
1
解决办法
170
查看次数

标签 统计

c ×2

linux ×1

mpi ×1