@@ -25,29 +25,37 @@ bool nesterov_a_test_task_mpi::TestTaskMPI::ValidationImpl() {
2525}
2626
2727bool nesterov_a_test_task_mpi::TestTaskMPI::RunImpl () {
28- int rank = -1 ;
29- MPI_Comm_rank (MPI_COMM_WORLD, &rank);
30- if (rank == 0 ) {
31- // Multiply matrices
32- for (int i = 0 ; i < rc_size_; ++i) {
33- for (int j = 0 ; j < rc_size_; ++j) {
34- for (int k = 0 ; k < rc_size_; ++k) {
35- output_[(i * rc_size_) + j] += input_[(i * rc_size_) + k] * input_[(k * rc_size_) + j];
36- }
37- }
38- }
28+ MultiplyMatrixBasedOnRank ();
29+ return true ;
30+ }
31+
32+ void nesterov_a_test_task_mpi::TestTaskMPI::MultiplyMatrixBasedOnRank () {
33+ if (world_.rank () == 0 ) {
34+ MultiplyRowMajor ();
3935 } else {
40- // Multiply matrices
36+ MultiplyColumnMajor ();
37+ }
38+ world_.barrier ();
39+ }
40+
41+ void nesterov_a_test_task_mpi::TestTaskMPI::MultiplyRowMajor () {
42+ for (int i = 0 ; i < rc_size_; ++i) {
4143 for (int j = 0 ; j < rc_size_; ++j) {
4244 for (int k = 0 ; k < rc_size_; ++k) {
43- for (int i = 0 ; i < rc_size_; ++i) {
44- output_[(i * rc_size_) + j] += input_[(i * rc_size_) + k] * input_[(k * rc_size_) + j];
45- }
45+ output_[(i * rc_size_) + j] += input_[(i * rc_size_) + k] * input_[(k * rc_size_) + j];
46+ }
47+ }
48+ }
49+ }
50+
51+ void nesterov_a_test_task_mpi::TestTaskMPI::MultiplyColumnMajor () {
52+ for (int j = 0 ; j < rc_size_; ++j) {
53+ for (int k = 0 ; k < rc_size_; ++k) {
54+ for (int i = 0 ; i < rc_size_; ++i) {
55+ output_[(i * rc_size_) + j] += input_[(i * rc_size_) + k] * input_[(k * rc_size_) + j];
4656 }
4757 }
4858 }
49- MPI_Barrier (MPI_COMM_WORLD);
50- return true ;
5159}
5260
5361bool nesterov_a_test_task_mpi::TestTaskMPI::PostProcessingImpl () {
0 commit comments