Hi, Am 02.04.2013 um 13:22 schrieb Duke Nguyen:
> On 4/1/13 9:20 PM, Ralph Castain wrote: >> It's probably the same problem - try running 'mpirun -npernode 1 -tag-output >> ulimit -a" on the remote nodes and see what it says. I suspect you'll find >> that they aren't correct. > > Somehow I could not run your advised CMD: > > $ qsub -l nodes=4:ppn=8 -I > qsub: waiting for job 481.biobos to start > qsub: job 481.biobos ready > > $ /usr/local/bin/mpirun -npernode 1 -tag-output ulimit -a > -------------------------------------------------------------------------- > mpirun was unable to launch the specified application as it could not find an > executable: `ulimit` is a shell builtin: $ type ulimit ulimit is a shell builtin It should work wit: $ /usr/local/bin/mpirun -npernode 1 -tag-output sh -c "ulimit -a" -- Reuti > Executable: ulimit > Node: node0108.biobos > > while attempting to start process rank 0. > -------------------------------------------------------------------------- > 4 total processes failed to start > > But anyway, I figured out the reason. Yes, it is the cluster nodes that did > not update ulimit settings (our system is a diskless node with warewulf so > basically we have to update the vnfs and reboot all nodes before the nodes > can run with new settings). > > Thanks for all the helps :) > > D. > >> >> BTW: the "-tag-output'" option marks each line of output with the rank of >> the process. Since all the outputs will be interleaved, this will help you >> identify what came from each node. >> >> >> On Mar 31, 2013, at 11:30 PM, Duke Nguyen <duke.li...@gmx.com> wrote: >> >>> On 3/31/13 12:20 AM, Duke Nguyen wrote: >>>> I should really have asked earlier. Thanks for all the helps. >>> I think I was excited too soon :). Increasing stacksize does help if I run >>> a job in a dedicated server. Today I tried to modify the cluster >>> (/etc/security/limits.conf, /etc/init.d/pbs_mom) and tried to run a >>> different job with 4 nodes/8 core each (nodes=4:ppn=8), but I still get the >>> mpirun error. My ulimit now reads: >>> >>> $ ulimit -a >>> core file size (blocks, -c) 0 >>> data seg size (kbytes, -d) unlimited >>> scheduling priority (-e) 0 >>> file size (blocks, -f) unlimited >>> pending signals (-i) 8271027 >>> max locked memory (kbytes, -l) unlimited >>> max memory size (kbytes, -m) unlimited >>> open files (-n) 32768 >>> pipe size (512 bytes, -p) 8 >>> POSIX message queues (bytes, -q) 819200 >>> real-time priority (-r) 0 >>> stack size (kbytes, -s) unlimited >>> cpu time (seconds, -t) unlimited >>> max user processes (-u) 8192 >>> virtual memory (kbytes, -v) unlimited >>> file locks (-x) unlimited >>> >>> Any other advice??? >>> >>>> On 3/30/13 10:28 PM, Ralph Castain wrote: >>>>> FWIW: there is an MCA param that helps with such problems: >>>>> >>>>> opal_set_max_sys_limits >>>>> "Set to non-zero to automatically set any system-imposed >>>>> limits to the maximum allowed", >>>>> >>>>> At the moment, it only sets the limits on number of files open, and max >>>>> size of a file we can create. Easy enough to add the stack size, though >>>>> as someone pointed out, it has some negatives as well. >>>>> >>>>> >>>>> On Mar 30, 2013, at 7:35 AM, Gustavo Correa <g...@ldeo.columbia.edu> >>>>> wrote: >>>>> >>>>>> On Mar 30, 2013, at 10:02 AM, Duke Nguyen wrote: >>>>>> >>>>>>> On 3/30/13 8:20 PM, Reuti wrote: >>>>>>>> Am 30.03.2013 um 13:26 schrieb Tim Prince: >>>>>>>> >>>>>>>>> On 03/30/2013 06:36 AM, Duke Nguyen wrote: >>>>>>>>>> On 3/30/13 5:22 PM, Duke Nguyen wrote: >>>>>>>>>>> On 3/30/13 3:13 PM, Patrick Bégou wrote: >>>>>>>>>>>> I do not know about your code but: >>>>>>>>>>>> >>>>>>>>>>>> 1) did you check stack limitations ? Typically intel fortran codes >>>>>>>>>>>> needs large amount of stack when the problem size increase. >>>>>>>>>>>> Check ulimit -a >>>>>>>>>>> First time I heard of stack limitations. Anyway, ulimit -a gives >>>>>>>>>>> >>>>>>>>>>> $ ulimit -a >>>>>>>>>>> core file size (blocks, -c) 0 >>>>>>>>>>> data seg size (kbytes, -d) unlimited >>>>>>>>>>> scheduling priority (-e) 0 >>>>>>>>>>> file size (blocks, -f) unlimited >>>>>>>>>>> pending signals (-i) 127368 >>>>>>>>>>> max locked memory (kbytes, -l) unlimited >>>>>>>>>>> max memory size (kbytes, -m) unlimited >>>>>>>>>>> open files (-n) 1024 >>>>>>>>>>> pipe size (512 bytes, -p) 8 >>>>>>>>>>> POSIX message queues (bytes, -q) 819200 >>>>>>>>>>> real-time priority (-r) 0 >>>>>>>>>>> stack size (kbytes, -s) 10240 >>>>>>>>>>> cpu time (seconds, -t) unlimited >>>>>>>>>>> max user processes (-u) 1024 >>>>>>>>>>> virtual memory (kbytes, -v) unlimited >>>>>>>>>>> file locks (-x) unlimited >>>>>>>>>>> >>>>>>>>>>> So stack size is 10MB??? Does this one create problem? How do I >>>>>>>>>>> change this? >>>>>>>>>> I did $ ulimit -s unlimited to have stack size to be unlimited, and >>>>>>>>>> the job ran fine!!! So it looks like stack limit is the problem. >>>>>>>>>> Questions are: >>>>>>>>>> >>>>>>>>>> * how do I set this automatically (and permanently)? >>>>>>>>>> * should I set all other ulimits to be unlimited? >>>>>>>>>> >>>>>>>>> In our environment, the only solution we found is to have mpirun run >>>>>>>>> a script on each node which sets ulimit (as well as environment >>>>>>>>> variables which are more convenient to set there than in the mpirun), >>>>>>>>> before starting the executable. We had expert recommendations >>>>>>>>> against this but no other working solution. It seems unlikely that >>>>>>>>> you would want to remove any limits which work at default. >>>>>>>>> Stack size unlimited in reality is not unlimited; it may be limited >>>>>>>>> by a system limit or implementation. As we run up to 120 threads per >>>>>>>>> rank and many applications have threadprivate data regions, ability >>>>>>>>> to run without considering stack limit is the exception rather than >>>>>>>>> the rule. >>>>>>>> Even if I would be the only user on a cluster of machines, I would >>>>>>>> define this in any queuingsystem to set the limits for the job. >>>>>>> Sorry if I dont get this correctly, but do you mean I should set this >>>>>>> using Torque/Maui (our queuing manager) instead of the system itself >>>>>>> (/etc/security/limits.conf and /etc/profile.d/)? >>>>>> Hi Duke >>>>>> >>>>>> We do both. >>>>>> Set memlock and stacksize to unlimited, and increase the maximum number >>>>>> of >>>>>> open files in the pbs_mom script in /etc/init.d, and do the same in >>>>>> /etc/security/limits.conf. >>>>>> This maybe an overzealous "belt and suspenders" policy, but it works. >>>>>> As everybody else said, a small stacksize is a common cause of >>>>>> segmentation fault in >>>>>> large codes. >>>>>> Basically all codes that we run here have this problem, with too many >>>>>> automatic arrays, structures, etc in functions and subroutines. >>>>>> But also a small memlock is trouble for OFED/Infinband, and the small >>>>>> (default) >>>>>> max number of open file handles may hit the limit easily if many programs >>>>>> (or poorly written programs) are running in the same node. >>>>>> The default Linux distribution limits don't seem to be tailored for HPC, >>>>>> I guess. >>>>>> >>>>>> I hope this helps, >>>>>> Gus Correa >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> users mailing list >>>>>> us...@open-mpi.org >>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users >>>>> _______________________________________________ >>>>> users mailing list >>>>> us...@open-mpi.org >>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users >>>>> >>>> _______________________________________________ >>>> users mailing list >>>> us...@open-mpi.org >>>> http://www.open-mpi.org/mailman/listinfo.cgi/users >>>> >>> _______________________________________________ >>> users mailing list >>> us...@open-mpi.org >>> http://www.open-mpi.org/mailman/listinfo.cgi/users >> >> _______________________________________________ >> users mailing list >> us...@open-mpi.org >> http://www.open-mpi.org/mailman/listinfo.cgi/users >> > > _______________________________________________ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users >