int can_display_list(t_element *list, t_element *begin, t_term *term) { int max_lenght; int i; int dec; dec = TABULATION; if (list != begin) { while (list != begin) { i = 0; max_lenght = (list->lenght) + dec; while (i < nb_lin(term) && list != begin) { if ((list->lenght) + dec > max_lenght) max_lenght = (list->lenght) + dec; if (max_lenght > nb_col(term)) return (ERROR); list = list->next; i++; } dec = max_lenght; } return (0); } return (ERROR); }
/* * Vérification visuelle de la fonction d'affichage. * Affichage d'une matrice complète, puis d'un sous-bloc. * Vérification du scatter/gather */ int main(){ double* global_mat; double* global_verif; MPI_Init(NULL, NULL); int size, rank, i; MPI_Comm_size(MPI_COMM_WORLD,&size); MPI_Comm_rank(MPI_COMM_WORLD,&rank); if (rank == 0){ double* mat = matrix_rand(4,6); printf("Matrice entière de taille (4,6) : \n"); affiche(4, 6, mat, 4, stdout); printf("Sous-bloc [3,2] de taille (2,3) : \n"); affiche(2, 3, mat+2+4, 4, stdout); free(mat); printf("Test scatter/gather...\t"); global_verif = matrix_rand(100, 100); global_mat = matrix_rand(100, 100); memcpy(global_verif, global_mat, 100*100*sizeof(double)); } int bsize = 3; int nb_cols = nb_col(size, bsize, 100, rank); double* local_mat = matrix_rand(100, nb_cols*bsize); split_matrix(100, 100, global_mat, local_mat, bsize, SCATTER); split_matrix(100, 100, global_mat, local_mat, bsize, GATHER); if (rank == 0){ for(i=0;i<100*100;++i) ASSERT_EQ(global_mat[i],global_verif[i]); printf("ok\n"); free(global_verif); free(global_mat); } free(local_mat); MPI_Finalize(); return 0; }