[petsc-users] Memory allocation limit in IBM AIX POE
Gong Ding
gdiso at ustc.edu
Sun Nov 20 22:01:50 CST 2011
Hi,
This problem has nothing to do with petsc.
However, I hope some one knows POE of AIX in this mailing list.
We now have a small cluster of PPC6.
The system is AIX6.1, with xlc and POE.
I found that when compiled with POE(compiled by mpCC_r, call MPI_Init at the beginning of main function, see below),
any memory allocation exceeds about 4M will crash.
The testing code is really simple:
#define HAVE_MPI
#ifdef HAVE_MPI
#include "mpi.h"
#endif
#include <iostream>
#include <vector>
struct ST
{
int i;
int j;
int k;
double v;
};
int main(int argc, char **argv)
{
#ifdef HAVE_MPI
MPI_Init(&argc, &argv);
#endif
std::vector<ST> array;
for(size_t i=0; i<300000; i++)
{
ST st;
array.push_back(st);
}
#ifdef HAVE_MPI
MPI_Finalize();
#endif
return 0;
}
And the makefile:
ALL: crash_mpi
crash_mpi: crash_mpi.o
mpCC_r -q64 -brtl -o crash_mpi crash_mpi.o
crash_mpi.o : crash_mpi.cc
mpCC_r -q64 -qansialias -qrtti=all -c crash_mpi.cc
The code tries to push 300K structure ST into a vector.
Total memory request is about 6M.
This code will always crash.
However, push 200K ST into vector works well.
It seems POE has some memory limitation here.
Does anyone know how to cancle this limitation?
Thanks
Gong Ding
More information about the petsc-users
mailing list