我正在尝试实施cannon算法,但无法准确计算时间复杂度。我很难将复杂的通信费用包括在内。
{1}for all i=0:N — 1
Left circular shift row i by i, so that A [i,j] is assigned A[i,(j+i)mod N]
{2}for all j =0 : N — 1
Upward circular shift column j by j, so that B(i,j) assigned B[(j+i) modN,j]
{3}for k = 1 : N
{4}for all i = 0 : N — 1 , {5}for all j = 0 : N — 1
C[i,j]= C[i,j] + A[i,j]*B[i,j] ;
Left circular shift each row of A by 1, so A[i,j] is assigned A[i,(j+1)mod N]
Upward circular shift each column of B by 1, so B[i,j] is assigned B[(i+1)modN,j]
据我说: N {1,2:因为1,2个环可以并行进行} +(N * N * N){3,4,5} = N + N 3
但link表示复杂性。我知道我的计算中没有包含通信费用。 这里有一个简单的解释(通信成本和存储空间要求)非常有用。