LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2038|回复: 13

什么样的编译参数才能体现出双核或者多核心cpu的好处?

[复制链接]
发表于 2007-12-9 20:47:46 | 显示全部楼层 |阅读模式
就是make.conf里面的写法,一般都是写k8,jn也不过是编译时候使用几个线程进行编译。

是不是gcc不提供额外的参数,那么也没有办法让程序充分利用多核心?还是利用多核心仅仅与内核有关?

是看到现在amd的4核心cpu比以前双核win平台下测试成绩,说什么才比intel的多少多少酷睿好一点,想到的

我想是否是因为微软的windows限制,设计的时候没有考虑多核心,所以效率不高?那么linux可能支持的好一些嘛?
发表于 2007-12-9 22:17:37 | 显示全部楼层
除非是支持openmp的程序,否则没法在编译时决定针对多核的优化代码生成。大多数Unix传统程序都是反对多线程的。
回复 支持 反对

使用道具 举报

发表于 2007-12-9 22:49:44 | 显示全部楼层
我看了一些相关的资料

得出一个不是很确定的结论:

如果不实用openmp的化现有的程序编译的结果都是只能正对一个核心来生成代码的,

就是说不会自动把可以的并行的东西并行,另外有的东西还不能并行,

所以现有的情况下,我们买的多核芯(我的是PD-915)都是在一个核心处理主要任务,系统在负载大的时候会把任务分开,但是这样只是能同时执行更多的任务,对于一个程序来讲似乎没有什么改进,

并行计算的主要技术是mpi(用在两台主机之间,需要cpu万全相同,并且支持mpi功能)openmp(就是现在多数人使用的双核处理器),似乎好像还没有什么软件在设计以及编译的时候使用这种技术,除非是你自己真对自己要完成的任务来开发编写一个程序。

个人见解,仅供参考。

欢迎补充纠正。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-10 10:40:22 | 显示全部楼层
这样还是说linux支持多核心也不是太好咯。本来想那“飞龙”的性能可能要到linux上才能体现,现在看来4核性能根本发挥不出来。
回复 支持 反对

使用道具 举报

发表于 2007-12-10 13:28:57 | 显示全部楼层
多核心是共享内存并行计算机的一种,从技术上来讲,是并行计算机。只有程序自身使用了多线程/多进程进程,才能发挥出其优势。编译参数只能让编译器根据相应的处理器型号的指令集来优化程序,对多核心的处理器也是一样。而且不论是 Windows,还是 Linux,或是 MacOS 或是其它 Unix,都是根本没有办法让编译器来利用多核的。但如果应用程序支持多线程,就可以利用多核了。在 Gentoo 中有个 USE 标记“pthread”,可以打开程序的多线程支持。
回复 支持 反对

使用道具 举报

发表于 2007-12-10 13:54:18 | 显示全部楼层
其实就是cpu主频上不去了,才走的另一条路,要不然没有新cpu卖了。
就像64位cpu一样,我们现在多数都在用32位操作系统,因为软件不支持,所以AMD的32/64的cpu推出的非常不错,能炒炒概念,其实没什么用处。
回复 支持 反对

使用道具 举报

发表于 2007-12-10 14:18:54 | 显示全部楼层
需要程序的支持吧
# euses thread
threads - Adds threads support for various packages. Usually pthreads
dev-db/sqlite:nothreadsafe - turn off thread safe operation of sqlite
dev-lang/perl:ithreads - Enable Perl threads, has some compatibility problems
dev-lang/python:nothreads - Disable threads (DON'T USE THIS UNLESS YOU KNOW WHAT YOU'RE DOING)
dev-lang/spidermonkey:threadsafe - Build a threadsafe version of spidermonkey
dev-libs/boost:threadsonly - Only build multithreaded libs
dev-libs/libsqlora8rathreads - specifies use of Oracle threads
net-dialup/freeradius:frnothreads - Disables thread support
sys-devel/libperl:ithreads - Enable Perl threads, has some compatibility problems
sys-libs/glibc:linuxthreads-tls - Configure the linuxthreads glibc with --with-__thread if supported by your system.  --with-tls is always enabled if supported and is NOT controlled by this switch.  So the glibc built will always support TLS binaries.  This toggle chooses whether or not glibc itself uses TLS.  If you're concerned about backwards compatibility with old binaries, leave this off.
www-servers/apache:mpm-threadpool - (experimental) Threadpool MPM - keeps pool of idle threads to handle requests
回复 支持 反对

使用道具 举报

发表于 2007-12-10 19:52:55 | 显示全部楼层
Post by ProgramFan;1793821
多核心是共享内存并行计算机的一种,从技术上来讲,是并行计算机。只有程序自身使用了多线程/多进程进程,才能发挥出其优势。编译参数只能让编译器根据相应的处理器型号的指令集来优化程序,对多核心的处理器也是一样。而且不论是 Windows,还是 Linux,或是 MacOS 或是其它 Unix,都是根本没有办法让编译器来利用多核的。但如果应用程序支持多线程,就可以利用多核了。在 Gentoo 中有个 USE 标记“pthread”,可以打开程序的多线程支持。

我查了gentoo官方的USE,http://www.gentoo.org/dyn/use-index.xml
那个标记应该是threads吧?
回复 支持 反对

使用道具 举报

发表于 2007-12-10 20:09:43 | 显示全部楼层
Post by 没本;1793629
大多数Unix传统程序都是反对多线程的。


为什么呢?反对多线程?
回复 支持 反对

使用道具 举报

发表于 2007-12-11 23:55:59 | 显示全部楼层
Post by LaoLiulaoliu;1793990
为什么呢?反对多线程?


UNIX的KISS思想认为多进程就够了。某UNIX大牛说多线程是为不懂状态机的程序员发明的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表