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