| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > open mp |
| Автор: redwhite90 10.10.2012, 23:20 | ||
| подскажите пожалуйста как можно еще распараллелить? вот код перемножения двух матриц. и вообще правильно ли я распараллелил?
Добавлено через 37 секунд правильно ли указал shared и private Добавлено через 4 минуты и 51 секунду первое знакомство с open mp просто |
| Автор: Silent 11.10.2012, 08:34 | ||||
| Синтаксически все верно, а вот логически - никакого прироста производительности не будет. Потому как ты распараллелил внутренний цикл, и у тебя параллельно считаются c[i][j]+=a[i][k] * b[k][j] - то бишь ты str*stlb раз входишь в параллельную секцию и выходишь из нее. Надо параллелить сверху вниз:
Ну а если пойти чуть подальше, то еще лучше поменять два внутренних цикла местами (по j и k), тем самым изменишь паттерн доступа к памяти (из массива b данные станут выбираться последовательно).
Тут для оптимизации - целое раздолье =) |
| Автор: Silent 11.10.2012, 09:04 | ||
почему? все так же последовательно, по строкам |
| Автор: redwhite90 12.10.2012, 21:46 |
| понял |