我正在尝试使用 MPI 运行 C 文件。我对 MPI 还比较陌生,所以我不确定出了什么问题。我正在尝试计算执行一个功能需要多长时间,以测量与串行版本相比的加速。时序代码如下:
int my_rank;
MPI_Init(0,0);
double start, elapsed, local_elapsed;
int iters;
// compute page rank
start = MPI_Wtime();
iters = solve(S, C, d, y0, y, eps, strawman_mvpSM);
local_elapsed = MPI_Wtime() - start;
MPI_Reduce(&local_elapsed, &elapsed, 1, MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD);
if(my_rank == 0) {
printf("final (page rank) probabilities, %d iterations in time %f\n", iters, elapsed);
printvec(y, n); printf("\n");
}
MPI_Finalize();
代码是使用编译的mpicc -g -Wall -std=c99 -o pagerank-mpi pagerank-mpi.c
代码运行使用srun -n 2 ./pagerank-mpi 1000
当它运行时,我得到以下输出:
[0] Abort: free_vbuf_head = NULL at line 175 in file vbuf.c
[1] Abort: free_vbuf_head = NULL at line 175 in file vbuf.c
initial probabilities
(0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
0.001, 0.001, 0.001, 0.001, 0.001, 0.001, ), sum is 1
dimension is 1000, nnz is 9097, damper is 0.850000, epsilon is 1e-09
initial probabilities
(0.001, 0.001, 0.001, 0.001, 0.001, 0.001,
0.001, 0.001, 0.001, 0.001, 0.001, 0.001, ), sum is 1
dimension is 1000, nnz is 9097, damper is 0.850000, epsilon is 1e-09
srun: error: node25: tasks 0-1: Exited with exit code 254
我找不到退出代码 254 的含义,也不知道 vbuf.c 是什么。该代码无法打印最终概率,但会打印两次初始概率,这是它不应该做的事情。我主要关心的是 Abort 行和退出代码。谁能解释他们在做什么以及为什么?