8 логических потоков на 4 ядрах максимум будут работать параллельно в 4 раза быстрее?

Я тестирую программное обеспечение, которое выполняется в 4 раза быстрее на Intel 2670QM, чем моя последовательная версия, использующая все 8 моих «логических» потоков. Я хотел бы получить отзывы сообщества о моем восприятии результатов бенчмаркинга s.

Когда я использую 4 потока на 4 ядрах, я получаю ускорение в 4 раза, весь алгоритм выполняется параллельно. Мне это кажется логичным, поскольку это предсказывает «закон Амдала». Диспетчер задач Windows говорит мне, что я использую 50% процессора.

Однако, если я запускаю одно и то же программное обеспечение во всех 8 потоках, я снова получаю ускорение в 4 раза, а не — в 8 раз.

Если я правильно понял :, мой процессор имеет 4 ядра с частотой 2,2 ГГц по отдельности, но частота делится на 1,1 ГГц при применении к 8 «логическим» потокам, и то же самое следует для остальной части компонента. например кеш-память? Если это правда, то почему диспетчер задач утверждает, что используется только 50% моего процессора?

#define NumberOfFiles 8
...
char startLetter ='a';
#pragma omp parallel for shared(startLetter)
for(int f=0; f<NumberOfFiles; f++){
   ...
}

Время использования дискового ввода-вывода не учитывается.Меня интересует только время, которое занимает вызов STL (STL sort ), а не дисковый ввод-вывод.

11
задан Cisum Inas 16 April 2016 в 14:51
поделиться