在处理器 0 中创建一个矩阵并分散到其他处理器。矩阵是对称密集矩阵。这就是它在处理器 0 中初始化的原因。
以这种方式创建一个矩阵:
A=malloc(sizeof(double)*N*N);
for (i=0; i<N; i++)
for(j=0; j<N; j++)
A(i,j)=rand()%10; // The code will be changed.
A(i,j) 定义为:
#define A(i,j) A[i*N+j]
N 必须为 100,000 才能测试算法。
这里的问题是:如果 N=100,000,那么所需的内存大约是 76GB。您建议如何存储 A 矩阵?
PS:当 N<20.000 并且集群是分布式内存系统(每个处理器 2GB RAM)时,算法工作得很好