说,如果我有这样的处理器这样它说#核= 4,#线程= 4,不支持超线程.
这是否意味着我可以同时运行4个程序/进程(因为核心只能运行一个线程)?或者这是否意味着我可以同时运行4 x 4 = 16程序/进程?
从我的挖掘中,如果没有超线程,每个核心只有一个线程(进程).如果我错了,请纠正我.
我是基准测试软件,它在Intel 2670QM上运行速度提高了4倍,然后我的串行版本使用了所有8个"逻辑"线程.我希望社群对我对基准测试结果的看法有所反馈.
当我在4个核心上使用4个线程时,我的速度提高了4倍,整个算法都是并行执行的.这对我来说似乎合乎逻辑,因为'Amdhals law'预测它.Windows任务管理器告诉我,我正在使用50%的CPU.
但是如果我在所有8个线程上执行相同的软件,我再次获得4倍的速度而不是 8倍的速度.
如果我已正确理解这一点:我的CPU有4个内核,频率为2.2GHZ,但当应用于8个'逻辑'线程时,频率被分为1.1GHZ,其余部分如高速缓冲存储器也是如此. ?如果这是真的那么为什么任务管理器只声称我的CPU有50%被使用?
#define NumberOfFiles 8
...
char startLetter ='a';
#pragma omp parallel for shared(startLetter)
for(int f=0; f<NumberOfFiles; f++){
...
}
Run Code Online (Sandbox Code Playgroud)
我不包括使用磁盘I/O的时间.我只对STL调用(STL排序)而不是磁盘I/O的时间感兴趣.
我在文献中已经看到一些较新的CPU,例如Intel Xeon"Nehalem-EX",它有8个内核和16个线程.他们在这里谈什么?我在引用中看到了这一点,所以SPARCS也是如此,这肯定不是代码产生的那种逻辑线程吗?这个超线程是否重新命名?
有人可以对此有所了解吗?
一个i7处理器可以运行8个线程,但我很确定我们可以在JAVA或C++程序中创建8个以上的线程(但不确定).我有一个i5处理器,在研究并发时,我创建了10个线程进行分配.我只是想了解CPU的核心评级与线程的关系.
超线程CPU是实现并行还是并发(上下文切换)?
我的猜测是没有并行性,只有上下文切换的并发性.
我读到多线程是一个单核可以管理多个线程(不是并行)的功能,好处是CPU一直在工作。对于超线程,单个核心创建 2 个虚拟核心,每个物理核心占用 2 个线程,其好处与多线程相同。
为什么很多人说超线程比多线程更好?
Ryzen CPU 使用超线程还是多线程?
cpu multithreading cpu-architecture hyperthreading amd-processor