Untitled
unknown
c_cpp
a year ago
1.2 kB
7
Indexable
int readA(int **A); int main(int argc, char **argv) { MPI_Init(&argc, &argv); int rank, p, *A, *B, N, chunckSize; MPI_Comm_size(MPI_COMM_WORLD, &p); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { N = readA(&A); chunckSize = N / p; B = malloc(chunckSize * sizeof(int)); } MPI_Bcast(&chunckSize, 1, MPI_INT, 0, MPI_COMM_WORLD); if(rank !=0){ A = malloc(chunckSize * sizeof(int)); B = malloc(chunckSize * sizeof(int)); } MPI_Scatter(A, chunckSize, MPI_INT, A, chunckSize, MPI_INT, 0, MPI_COMM_WORLD); #pragma omp parallel for for (int i = 0; i < chunckSize; i++) B[i] = f(A[i]); // Assuming f is defined elsewhere MPI_Gather(B, chunckSize, MPI_INT, B, chunckSize, MPI_INT, 0, MPI_COMM_WORLD); if (rank == 0) { int isMono = 1; #pragma omp parallel for reduction(&&:isMono) for (int i = 1; i < N; i++) { if (B[i] <= B[i-1]) { isMono = 0; } } printf("isMono ? %s\n", isMono ? "Yes" : "No"); } MPI_Finalize(); return EXIT_SUCCESS; }
Editor is loading...
Leave a Comment