Я тестирую программное обеспечение, которое выполняется в 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 ), а не дисковый ввод-вывод.