[mpich-discuss] Matrix dimension
Pavan Balaji
balaji at mcs.anl.gov
Fri Nov 23 08:40:24 CST 2012
This problem has nothing to do with MPI.
You are allocating a lot of memory on the stack. Try allocating the
matrix with a bunch of malloc's instead.
-- Pavan
On 11/22/2012 12:35 PM US Central Time, Alejandro Allievi wrote:
> Hi,
>
> The following matrix multiplication code does not execute in my
> machine for MATRIX_ORDER greater than 400 or so, and I've got plenty
> of memory. Is there anything I need to tweak in MPI.h for this to
> work??
>
> Thanks for any help.
>
> Alejandro
>
> #include <stdio.h>
> #include "mpi.h" /* for the Wtime() function only */
>
> #define MATRIX_ORDER 400
>
> typedef float MATRIX_T[MATRIX_ORDER][MATRIX_ORDER];
>
> void serial_matrix_mult(MATRIX_T A, MATRIX_T B, MATRIX_T C, int n);
>
> int main(int argc, char* argv[])
> {
> MATRIX_T A;
> MATRIX_T B;
> MATRIX_T C;
> int i, j;
> double start, finish;
> int p, my_rank;
>
> MPI_Init(&argc,&argv);
> MPI_Comm_size(MPI_COMM_WORLD, &p);
> MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
>
> for (i = 0; i < MATRIX_ORDER; i++) /* initialize matrices */
> for (j = 0; j < MATRIX_ORDER; j++) /* to an arbitrary value */
> {
> A[i][j] = 5;
> B[i][j] = 5;
> }
>
> start = MPI_Wtime();
> serial_matrix_mult(A, B, C, MATRIX_ORDER);
> finish = MPI_Wtime();
>
> printf("Elapsed time in seconds is %e\n", finish - start );
>
> MPI_Finalize();
>
> }
> _______________________________________________
> discuss mailing list discuss at mpich.org
> To manage subscription options or unsubscribe:
> https://lists.mpich.org/mailman/listinfo/discuss
>
--
Pavan Balaji
http://www.mcs.anl.gov/~balaji
More information about the discuss
mailing list