Matrix 如何确定某个索引位于矩阵的对角还是反对角上?

Matrix 如何确定某个索引位于矩阵的对角还是反对角上?,matrix,mpi,coordinate-systems,cartesian,Matrix,Mpi,Coordinate Systems,Cartesian,因此,我目前正在从事一个涉及并行网格结构的项目。我遇到的问题与通信方案有关。这个矩阵中每个元素的信息量就是处理器的等级。这让我可以计算出它在全局方案中的位置 我将尝试给出一个直观的示例: 该矩阵表示节点编号的全局图 |0 | 1 | 2 | 3| |4 | 5 | 6 | 7| |8 | 9 | 10 | 11| |12 | 13 | 14 | 15| 在本地,我可以找到任何(I,j)给定的处理器等级和通信中的处理器总数 我试图解决的问题是,对于任意大小的正方形网格,如何找到对角线或蚂蚁对角线上

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

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

该矩阵表示节点编号的全局图

|0 | 1 | 2 | 3|

|4 | 5 | 6 | 7|

|8 | 9 | 10 | 11|

|12 | 13 | 14 | 15|

在本地,我可以找到任何(I,j)给定的处理器等级和通信中的处理器总数

我试图解决的问题是,对于任意大小的正方形网格,如何找到对角线或蚂蚁对角线上的元素

下面是我所看到的更好的图片。不同的黑/白方案已经被考虑,我只需要知道如何在给定“处理器秩和节点坐标”的情况下找到对角线和反对角线


我想出了解决这个问题的办法


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

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