浏览代码

mpi/examples/reduction/mpi_reduction.c: only initialise data on owner node

Nathalie Furmento 13 年之前
父节点
当前提交
f64d555ada
共有 1 个文件被更改,包括 10 次插入2 次删除
  1. 10 2
      mpi/examples/reduction/mpi_reduction.c

+ 10 - 2
mpi/examples/reduction/mpi_reduction.c

@@ -73,7 +73,7 @@ int main(int argc, char **argv)
         int my_rank, size, x;
         int value=0;
         unsigned vector[X];
-	unsigned dot=0, sum=0;
+	unsigned dot, sum=0;
         starpu_data_handle_t handles[X];
 	starpu_data_handle_t dot_handle;
 
@@ -83,7 +83,11 @@ int main(int argc, char **argv)
 
         for(x = 0; x < X; x++)
 	{
-		vector[x] = x+1;
+		int mpi_rank = my_distrib(x, size);
+		if (mpi_rank == my_rank)
+		{
+			vector[x] = x+1;
+		}
 		sum += x+1;
         }
 
@@ -106,6 +110,10 @@ int main(int argc, char **argv)
 		}
 	}
 
+	if (my_rank == 0) {
+		dot = 14;
+		sum+= dot;
+	}
 	starpu_variable_data_register(&dot_handle, 0, (uintptr_t)&dot, sizeof(unsigned));
 	starpu_data_set_rank(dot_handle, 0);
 	starpu_data_set_reduction_methods(dot_handle, &redux_codelet, &init_codelet);