OK folks,

Whilst testing cases of ratcheting up memory usage under Mac OSX Leopard I ran into a peculiar problem of segmentation faults that just should not be happening. I whittled down the code to find where the error took place and well, for this simple code...

#include <mpi.h>
#include <iostream>

int main(int argc, char **argv)
{

        MPI_Init( &argc, &argv);
        int n = 10000000;
        float X[n];
        MPI_Finalize();

        return 0;

}

Using mpic++ -m64 test.cpp -o test
and mpiexec -np 1 ./test

produces a core dump on a machine with 12Gb of RAM.

and the error message

mpiexec noticed that job rank 0 with PID 75545 on node mymachine.com exited on signal 4 (Illegal instruction).

However, substituting in

float *X = new float[n];
for
float X[n];

Succeeds!

Before we get too far, the implication and the reason I found the error in the first place is that I was allocating 2D arrays that were pretty large with the line
float X[n][m];
and they were failing. However the total size times the number of processors was well within the RAM of the machine.

Am I missing something? Has this been seen before?

Regards,
Greg

Reply via email to