2017-02-17 19 views
0

Прямо сейчас, я делаю параллельное программирование с использованием OpenMP в многоядерной машине. Я новичок в параллельном программировании.Нужна помощь в параллельном программировании с использованием OpenMP?

До сих пор я сделал следующие вещи:

1 млн х 1 млн программы умножения Матрица с использованием OpenMP

Вычислить время выполнения с изменением количества нити на другой машине (как как corei5, corei3)

Я видел, что когда нет нитки = 4, его минимальное время должно выполнить мой код. (Я не знаю почему)

В целом его анализ эффективности. Теперь я хочу пойти gem5. Теперь, что я могу сделать или что для меня правильно? Я хочу знать, что я могу сделать здесь. Мне нужна идея.

ответ

0

Я видел, что когда нет нити = 4, его минимальное время должно быть выполнить мой код. (я не знаю почему)

Производительность и время работы программ зависит от архитектуры компьютера. Так что, возможно, вы можете обосновать это, если вы используете технические характеристики вашего ПК. Я бы предположил, что это четырехъядерный процессор ...

Он также может зависеть от фактического потока управления, накладных расходов на создание потоков и подобных аспектов.

Следующие шаги вы можете предпринять, может быть:

  • поиск лучшего алгоритма матричного умножения, который показывает более низкую асимптотическую сложность времени!
  • Улучшение текущего времени выполнения; Выявляя горячие части коды с помощью средств профилирования, как дргиЕ ...
  • Исследуйте передовые конструктов OpenMP для извлечения максимальной параллельности из кода

 Смежные вопросы

  • Нет связанных вопросов^_^