2012-04-09 4 views
0

Поскольку я увеличиваю количество ядер для неравномерной параллельной линейной задачи (цикл for, где каждая итерация выполняет множество вычислений, независимо от других итераций), эффективность уменьшается (эффективность как Ts/(p * Tp)) как-то линейно по отношению к числу ядертеория openmp против эффективности практики?

Я знаю, что на практике планирование потоков, ОС и проблемы с кешем могут значительно замедлить реализацию.

Я могу добавить, что я получаю ускорение, а теоретическая проблема имеет линейное ускорение, которое теоретически имеет эффективность 1 при возрастании p.

вопрос: а как ОС, планирование потоков, память acceses и другие технические ограничения влияют на эффективность алгоритма по мере увеличения количества процессоров ???? если это вообще затронет?

+2

Ответ невозможно, потому что это зависит от проблемы и реализации. И «приемлемый» кажется мне субъективным. – duffymo

+0

добавил дополнительную информацию, поэтому на вопрос можно ответить, надеюсь, – labotsirc

+0

Нет, еще слишком общий. – duffymo

ответ

3

Возможно, вы думаете о чем-то вроде Amdahl's Law, но специфика каждого случая затрудняет его фиксацию.

+0

спасибо, я уже посмотрел момент назад, действительно помогает выяснить, что происходит, однако для меня все еще остается загадкой, насколько память, ОС и кеш влияют на эффективность для openmp. Я хотел бы знать, есть ли у других людей линейное снижение эффективности для линейных алгоритмов ускорения – labotsirc

1

Вы должны смотреть в сильное масштабирование:

https://www.sharcnet.ca/help/index.php/Measuring_Parallel_Scaling_Performance#Strong_Scaling

Вы в основном получаете убывающую отдачу, как вы добавите больше ядер к проблеме из-за все факторы, которые вы упомянули.

+0

спасибо, я думаю, что это то, что hapenning (уменьшение отдачи). Я был использован для программирования в gpus, где я не видел эффект настолько заметным, возможно, из-за проблем. – labotsirc

+0

Я предлагаю провести сильное скейлинг-тестирование, а затем взять количество ядер, которые дают самый быстрый результат. Но имейте в виду, что это будет зависеть от машины – Benoir

+0

отлично, спасибо за хорошие советы – labotsirc

0

Является ли ваша проблема связанными с памятью или памятью? Какова ваша системная архитектура - SMP или NUMA? Сколько кешей у ваших процессоров? Вы привязываете свои потоки к ядрам или нет? ...

Слишком много параметров, которые необходимо учитывать, прежде чем кто-либо сможет ответить на ваш вопрос. Я бы предположил, что вы используете что-то вроде Intel VTune Amplifier или Oracle Collector/Analyzer, чтобы увидеть, где и что приводит к увеличению неэффективности.