向前移动和矩阵中的索引
move forward n indeces in matrix
我很难相信这不是骗局,但我找不到 任何 回答这个问题的帖子,所以我会尽力做到这一点一个不错的。
问题本质上是这样的:你有一个大小为 Row X Column
的矩阵,你的处理器数量是 P
。分区的最大大小(每个处理器分配的元素数)为 ((Rows*Columns)/processors)+1
,并且您必须执行一些逻辑以确保您不会越界。每个处理器都分配了一个起点,并且必须向前跳转 P
个索引。
所以在一个按顺序编号的 4x4 矩阵上,如下所示:
[1] [2] [3] [4]
[5] [6] [7] [8]
[9] [10][11][12]
[13][14][15][16]
ID 为 0
的处理器将获得 1、4、7、10、13 和 16。(最大分区大小)。
我导师给我们的算法是这样的:
i / columns = row# and i % columns = column#
这适用于他给我们的示例,例如 6 / 4 = 1
和 6 % 4 = 2
,所以 6 位于索引 [1][2]
逻辑至少是直观的,但有几次失败了。
那么什么算法可以可靠地在 NxM
矩阵上生成所需值的索引?
您似乎有一个在 n 个处理器上循环分区的数组。
作为解决方案的提示(因为这是 class 的工作),将每个矩阵位置转换为数组中的一个位置,比如 i。然后对这个数字进行算术运算。
计算指数的"algorithm"是基于所有指数都是从零开始的,包括"matrix numbering":
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
现在你可以看到 6 确实在第 1 行第 2 列。
我很难相信这不是骗局,但我找不到 任何 回答这个问题的帖子,所以我会尽力做到这一点一个不错的。
问题本质上是这样的:你有一个大小为 Row X Column
的矩阵,你的处理器数量是 P
。分区的最大大小(每个处理器分配的元素数)为 ((Rows*Columns)/processors)+1
,并且您必须执行一些逻辑以确保您不会越界。每个处理器都分配了一个起点,并且必须向前跳转 P
个索引。
所以在一个按顺序编号的 4x4 矩阵上,如下所示:
[1] [2] [3] [4]
[5] [6] [7] [8]
[9] [10][11][12]
[13][14][15][16]
ID 为 0
的处理器将获得 1、4、7、10、13 和 16。(最大分区大小)。
我导师给我们的算法是这样的:
i / columns = row# and i % columns = column#
这适用于他给我们的示例,例如 6 / 4 = 1
和 6 % 4 = 2
,所以 6 位于索引 [1][2]
逻辑至少是直观的,但有几次失败了。
那么什么算法可以可靠地在 NxM
矩阵上生成所需值的索引?
您似乎有一个在 n 个处理器上循环分区的数组。
作为解决方案的提示(因为这是 class 的工作),将每个矩阵位置转换为数组中的一个位置,比如 i。然后对这个数字进行算术运算。
计算指数的"algorithm"是基于所有指数都是从零开始的,包括"matrix numbering":
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
现在你可以看到 6 确实在第 1 行第 2 列。