什么是 "for to by" 循环?

What is a "for to by" loop?

我正在尝试为我的并行编程 class 执行此矩阵乘法分配,但我不明白我的教授在伪代码中使用这个“for to by”循环是什么意思。更具体地说,为什么“by”在那里,我如何将它翻译成代码?我正在使用 C.

这是他希望我编写的循环,作为此作业的一部分: 变量 A、B 和 C 是我定义的二维数组。 n是两个n乘n的矩阵相乘的大小,我不知道“by”语句后的变量s应该是什么。

//Loop 3
for it = 1 to n by s do
for kt = 1 to n by s do
for jt = 1 to n by s do
 for i = it to min(it+s-1, n) do
  for k = kt to min(kt+s-1, n) do
   for j = jt to min(jt+s-1, n) do
    C[i,j] = C[i,j] + A[i,k] x B[k,j]
   endfor
  endfor
 endfor
endfor
endfor
endfor

by是迭代变量每次递增的量。在 C 中,您将使用 it += s。这称为 stepstride

for (int it = 1; it <= n; it += s) { // for it = 1 to n by s do
    // body of loop
}

如果您省略 by s,则假定它递增 1,您将使用 it++.

请注意,在 C 中,数组索引从 0 开始,而不是 1。所以循环实际上是

for (int it = 0; it < n; it += s)