У меня есть некоторые странные результаты при тестировании OpenMP. В качестве тестового примера я суммирую два вектора чисел с плавающей точкой, задача, которая должна быть полностью распараллеливаемой.
Для векторов, достаточно больших на моем четырехъядерном процессоре с Hyper-Threading, что по сути означает, что у меня должно быть 4×2 независимых потока, я получаю почти идеальное ускорение с коэффициентом два от однопоточного исполнения до двухпоточного. Та же история, если я перейду с 4 потоков на 8 потоков, относительное ускорение в 2 раза.
Тем не менее, я почти не получаю ускорение от 2 до 4 потоков. Я мог понять, произошло ли это во время перехода от 4 до 8 потоков, возможно, потому, что технология Hyper-threading, которая помещала два логических потока в одно физическое ядро, была несовершенной. Но на этом промежуточном этапе мне это кажется странным.
Буду благодарен за любые идеи!
Задача ещё не решена.
Других решений пока нет …