Greg Lindahl wrote: > On Fri, Nov 21, 2008 at 09:38:29AM -0600, Nathan Moore wrote: > >> I had a similar problem with gfortran, and it only appeared with large array >> sizes (bigger than 4000x4000 as I recall). "ulimit" was no help, I assume >> there's a memory constraint built in somewhere. > > With OpenMP the compiler has to set up multiple stacks, and some are > more clever than others. If you were using the PathScale compiler, for > example, and overran one of the thread stacks, it would print out an > error message saying what happened and how to raise that limit.
I see warnings from Pathscale-3.2 when I run 2 8k x 8k arrays of doubles using 1 or 2 threads (but not 4 or 8 threads): ** OpenMP warning: requested pthread stack too large, using 4294967296 bytes instead But it still seems to work. On my machine (with 8GB ram) I can run 2 8k x 8k arrays of doubles without problem. For runs with 8kx8k arrays, convergence_v = 1, 24 iterations and gcc-4.3.2 -O3 -fopenmp: real 3m39.818s real 2m21.298s real 2m19.850s real 1m39.412s Pathscale-3.2 -O3 -mp: real 3m10.803s real 2m24.492s real 1m43.183s real 1m20.669s I believe that arrays in C/Fortran have to be contiguous by default and that depending on kernel (32 vs 64bit), PAE, and BIOS settings sometimes all physical memory isn't contiguous. _______________________________________________ Beowulf mailing list, Beowulf@beowulf.org To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.org/mailman/listinfo/beowulf