re-us 发表于 2008-2-9 22:55:32

感觉应该是和内核有关的? 谢谢

我们的高性能计算机是:cluster,每个node上有4个cpu,总共有16个node
1. 并行的时候在linux下必须要加上下面几句话,不知道为什么?
exportLD_ASSUME_KERNEL=2.4.1 (知道这个语句是设置环境变量,但是为什么是2.4.1,怎么查找这个参数)
ulimit -s 102400 (必须加上这个语句,不然不能并行,为什么?好像有的机子上不用这个命令的)

2.并行的时候感觉无法使用多个cpu,具体的情况如下。
当设置export OMP_NUM_THREADS=2的时候,用top查看,每个cpu的使用率大概是100%
当设置export OMP_NUM_THREADS=4的时候,每个cpu的使用率大概是50%
当设置export OMP_NUM_THREADS=8的时候,每个cpu的使用率大概是25%

想让export OMP_NUM_THREADS=8(或者更多)的时候,cpu的使用率也是100%如何设置呢?还是说机器的性能就这样呢?

非常谢谢

cnhnln 发表于 2008-2-11 00:46:03

1.可能是你的某些程序运行需要老的线程库,所以要修改LD_ASSUME_KERNEL。请参阅“Red Hat Linux 9 发行注记”

Red Hat Linux 9 包括 Native POSIX Thread Library (NPTL),它是 Linux 的 POSIX 线程的新实现。该库为 i686 或更高的处理器提供了性能增进和增加了的可缩放性。

该线程库的设计目标是与原有的 LinuxThreads 实现在二进制上兼容;不过,依赖于脱离 POSIX 标准的 LinuxThreads 实现之处的应用程序将需要被修正。值得注意的不同之处包括:

- 信号处理已从每线程信号处理改成 POSIX 进程信号处理。

- getpid() 在所有的线程中返回相同值。

- 如果使用了 vfork(),用 pthread_atfork 注册的线程处理程序就不会运行。

使用 NPTL 时会遇到问题的已知应用程序包括:

- 版本 1.4.1 之前的 Sun JRE

- IBM JRE

如果某应用程序使用 NPTL 无法正确运行,它可以使用原有的 LinuxThreads 实现来运行,方法是设置以下的环境变量:

LD_ASSUME_KERNEL=<kernel-version>

可用的版本如下:

- 2.4.1 — 带有浮动堆栈的 Linuxthreads

- 2.2.5 — 没有浮动堆栈的 Linuxthreads

所有动态链接的程序的 NPTL 支持可以使用以下引导时间选项来禁用:

nosysinfo

详细可以参见 http://www-128.ibm.com/developerworks/cn/linux/l-threading.html

普通用户打开文件数有限制,所以要ulimit一下,root用户没有这种限制

2.没用过,不知道

re-us 发表于 2008-2-11 12:47:06

非常谢谢 还是不在。
继续等待高手回答第二个问题。
再次感谢
页: [1]
查看完整版本: 感觉应该是和内核有关的? 谢谢