114 练习 - 数据类型

BACKWARD FORWARD


目标:学习数据类型

  1. 编写一个将矩阵(以列主形式存储)的一行发送到其它处理器的程序。
  2. 让处理器0拥有整个矩阵,此矩阵与处理器有同样多的行。

    处理器0发送行i到处理器i。

    处理器i读取此行到仅容纳此行的局部数组中,即,处理器0有矩阵A(N,M),而其它处理器有一行B(M)。

      写一个程序来处理这种情况,其中矩阵是方阵。

      写一个程序来处理从终端读取许多列。

      如果愿意,程序员可以发送矩阵的列,此矩阵以行主形式存储。

    如果你有时间,尝试下面之一。如果你没有时间,思考你怎样编写。

  3. 写一个程序来处理一个矩阵,其中每一处理器有矩阵的一部分。使用拓扑来定义沿着处理器对矩阵的2维划分,假设所有处理器有同样大小的子阵。
    1. 使用MPI_SendMPI_Recv来发送块,处理块。

      使用MPI_Sendrecv

      创建一个数据类型以允许你接受已经处理的块。

  4. 写一个程序来发送一个2维网格的“鬼点”(ghostpoints)到邻居处理器。假设每一处理器拥有同样大小的子块。
    1. 使用拓扑来发现邻居。

      为“行”定义数据类型。

      使用MPI_Sendrecv 或者MPI_IRecvMPI_SendMPI_Waitall一起

      使用MPI_Isend 和MPI_Irecv来启动通信,在内部做一些计算,然后使用 MPI_Waitany来处理它们所达到的边界。

    同样的方法适用于通用的数据结构,例如非结构化网格。

  5. 做3,但是针对3维网格。你会需要MPI_Type_Hvector


Copyright: NPACT BACKWARD FORWARD