Hi. I'm having problem calculating huge matrixes (by huge I means at least 100000 x 100 matrix). I'm having a segmentation fault. Also i set mi LWORK = 3 * m * m + 4 *n *n + 4 *n
Thank you very much
ahs1200 wrote:You can't declare large arrays like this.
double* a = new double[M*N];
double* s = new double[N];
double* work = new double[LWORK];
int* iwork = new int[M*N];
double* uu = new double[M*N];
double* vt = new double[N*N];
The memory allocation is handled, when a correct allocation is commanded.
ahs1200 wrote:The rest of the code besides the size of WORK remains the same. But tell us how much ram you have and if you are running a 32bit or 64bit OS.
18000x100 consume my RAM limit of 4GB on 64bit linux with some more programs running. If I take floats in stead of doubles and sgesdd instead of dgesdd then obviously you can run up to 40000x100
ahs1200 wrote:axelyamel wrote:ahs1200 wrote:The rest of the code besides the size of WORK remains the same. But tell us how much ram you have and if you are running a 32bit or 64bit OS.
18000x100 consume my RAM limit of 4GB on 64bit linux with some more programs running. If I take floats in stead of doubles and sgesdd instead of dgesdd then obviously you can run up to 40000x100
I'm using 2gb with 32bit linux
Will never be enough.
If you choose JOBU = 'A' M=100000 N=100
A=O(MxN) U=O(MxM) V=O(NxN)
Let's do some math for doubles.
size(A) = 76 MB ok.
size(V) = 70 KB very ok.
but
size(U) = 75GB NOT ok!!!!
This matrix would even bust our research group's cluster with scalapack.
Users browsing this forum: No registered users and 8 guests