【问题标题】:How to find whether a certain index lies on diagonal or anti diagonal of a matrix?如何查找某个索引是否位于矩阵的对角线或反对角线上?
【发布时间】:2012-07-24 20:23:07
【问题描述】:

所以我目前正在从事一个涉及并行网格结构的项目。我遇到的问题与通信方案有关。这个矩阵中每个元素的信息量就是它的处理器等级。这让我可以计算出它在全局方案中的位置。

我将尝试给出一个直观的例子:

这个矩阵代表了节点编号的全局图。

| 0| 1| 2| 3|

| 4| 5| 6| 7|

| 8| 9|10|11|

|12|13|14|15|

在本地,我可以找到任何 (i,j),因为它的处理器等级和通讯中的处理器总数。

我要解决的问题是如何找到,对于任意大小的方形网格,我如何知道哪个元素在对角线上或蚂蚁对角线上。

下面发布了我正在查看的更好的图片。已经处理了不同的黑白方案,我只需要知道如何在给定其处理器等级和节点坐标的情况下找到对角线和反对角线。

【问题讨论】:

  • 全局对角元素显然也是位于拓扑结构对角线上的进程中的数据的对角元素 (row == column) (coord(0) == coord(1))。这同样适用于反对角元素。 (假设您的流程拓扑也是正方形)
  • 我理解其中的一部分。我想知道在每个部门内构建选择图(如图所示)。如果我理解您的意思,我的流程拓扑不是方形的。如果我按图片中的最后一个数字走;第 1 行有 0..7,第 2 行有 8..15,第 3 行有 16..23,依此类推。

标签: matrix mpi coordinate-systems cartesian


【解决方案1】:

我想出了一些办法来解决这个问题。

我做的第一件事是查看每个处理器的坐标系 (i,j)。然后我注意到如果你取 abs(i - j) 你会得到一个奇数或偶数。这很明显,但是当您将其应用于每个细分时,就像原始问题中的图像一样,您可以看到相同的行为,并且它区分了主对角线和反对角线。所以我使用 (i,j) 坐标并设置了一个规则,确定所述坐标是否在象限(I 或 III)与(II 或 IV)的任一象限中,并确定标志应该是零还是一。这给了我正在寻找的解决方案。

【讨论】:

    猜你喜欢
    • 2021-11-15
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多