因此,我刚刚购置了一台配备AMD 6212处理器的新型16核服务器。我有我在各种英特尔处理器上运行的代码。它使用锁定的队列将工作分配给pthread,pthread随后将工作写回共享内存,锁定写入。我主要是计算边界。AMD处理器上的几个pthreads没有收益?
在Intel处理器上,随着线程数的增加,我的性能立即提高。从1到2线程几乎增加了两倍的性能。
在AMD处理器上使用相同的代码,即使是4个线程,我也没有增益(略微放缓)。但是,当我使用128个线程时,我看到6倍的加速。
有没有人有一个想法可能会发生什么?
至于操作系统的规格,如果我输入:
cat /proc/version
我得到:
Linux version 2.6.32-5-amd64 (Debian 2.6.32-39) ([email protected]) (gcc version 4.3.5 (Debian 4.3.5-4)) #1 SMP Thu Nov 3 03:41:26 UTC 2011
为了进一步跟进,剩下的问题是由于访问全局变量引起的,这些变量并没有减慢英特尔方面的速度,但有一个巨大的对AMD方面造成负面影响。切换到Ubuntu似乎也有帮助。 – 2012-09-21 22:40:21