回 帖 发 新 帖 刷新版面

主题:【求助】 关于MPI和集群的一个问题

#PBS -S /bin/sh
#PBS -o out2
#PBS -e err2
#PBS -q dque
#PBS -l nodes=12:ppn=1 -l walltime=150000:00:00
cd /project

/opt/mpich2/bin/mpdboot

ulimit -s unlimited

/opt/mpich2/bin/mpif90 -i-static -openmp ...........
                                                                       
/opt/mpich2/bin/mpirun -np 12  ...........

以上是一个提交任务的脚本文件,其中不限制堆栈大小命令“ulimit -s unlimited”这样放置对吗? 我感觉这样只对当前的一个节点有效,如何让这条“ulimit -s unlimited”命令对所有参加运算的节点有效呢?

谢谢!

回复列表 (共10个回复)

沙发


把ulimit -s unlimited放在.bashrc中

板凳

[quote]
把ulimit -s unlimited放在.bashrc中[/quote]

请问具体怎么操作呢?我只会基本的Linux命令。

3 楼


vi ~/.bashrc
在最后添加那句就可以了
加好后,source ~/.bashrc

4 楼

不过这样你还是必须得在集群中每台机器改一次。
当然如果你集群中的登录脚本是集中管理的那就好办了。只需要在主服务器上改就行了。具体的建议您问问集群管理员,自己乱动责任太大啊:)

5 楼


有没有办法只在我这个提交任务的脚本文件中修改呢? 不方便修改服务器其他的东西啊。

6 楼


有没有办法只在我这个提交任务的脚本文件中修改呢? 不方便修改服务器其他的东西啊。

7 楼

谢谢,我还是不太清楚 vi ~/.bashrc 和 source ~/.bashrc 应该放在我这个脚本文件的什么位置,能明确说明一下吗??  还有bashrc应该放在与脚本文件相同的目录下吗?

8 楼

[quote]
把ulimit -s unlimited放在.bashrc中[/quote]

还有,用这个bashrc会不会影响别的用户? 使用之后下次当我登陆时还需要重新设置吗?

9 楼

单机上设置堆栈,命令行执行ulimit -s unlimited,或者放到.bash_profile/.bashrc中并非真的就是不限制了,系统还是有限制的。
系统的资源设置是在/etc/security/limits.conf这个文件中,堆栈大小就是其中之一,根据自己的情况设置好这个文件,可以一劳永逸地解决问题。文件中有注释,学习即可,我也改大了,供参考,
root        hard    stack           1024576
root        soft    stack           65536
*           hard    stack           524288
*           soft    stack           32768
原先都是8MB,我改成了64M/32M,这个值可以在命令行通过ulimit -s再增加,上限(hard)被我设的很大,这个值不能热修改,必须重启。
建议不要改的太大。。。,防止流氓程序或者软件bug占太多内存。
可见,可以分用户进行设置,还有所谓soft/hard设置的区别,这就是为什么ulimit -s 不能解决问题:只能修改soft的值。
以上是以Redhat rhel为例,fedora也一样。其他Linux我就不知道了。

集群上怎么弄,考,我他妈的也帮不了你。

以上都是自己摸索的经验,如有错误请指正。

10 楼

[quote]单机上设置堆栈,命令行执行ulimit -s unlimited,或者放到.bash_profile/.bashrc中并非真的就是不限制了,系统还是有限制的。
系统的资源设置是在/etc/security/limits.conf这个文件中,堆栈大小就是其中之一,根据自己的情况设置好这个文件,可以一劳永逸地解决问题。文件中有注释,学习即可,我也改大了,供参考,
root        hard    stack           1024576
root        soft    stack           65536
*           hard    stack           524288
*           soft    stack           32768
原先都是8MB,我改成了64M/32M,这个值可以在命令行通过ulimit -s再增加,上限(hard)被我设的很大,这个值不能热修改,必须重启。
建议不要改的太大。。。,防止流氓程序或者软件bug占太多内存。
可见,可以分用户进行设置,还有所谓soft/hard设置的区别,这就是为什么ulimit -s 不能解决问题:只能修改soft的值。
以上是以Redhat rhel为例,fedora也一样。其他Linux我就不知道了。

集群上怎么弄,考,我他妈的也帮不了你。

以上都是自己摸索的经验,如有错误请指正。[/quote]

ulimit -s 还是可以解决程序出现"segment fault”错误的对我来说,我用OpenMP在单机上弄的时候。

我来回复

您尚未登录,请登录后再回复。点此登录或注册