Если вы хотите, чтобы все было в порядке, вы должны печатать только из одного процесса.Это означает, что вы должны собрать весь свой вектор результатов обратно в процесс 0, а затем распечатать его.
MPI_Gather (&(res[col_count]), 1, MPI_INT, res, 1, MPI_INT, 0, MPI_COMM_WORLD);
for (int i=0 ; i<col_max ; ++i) {
printf ("%f\n", res[i]);
}
Обратите внимание, что процесс 0 должен иметь полный вектор res
(и вы должны позаботиться о том, чтобывыделите его перед вызовом MPI_Gather
), но в вашем примере все другие процессы используют только res[col_count]
, поэтому вам лучше выделить для них только один int
.