![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 23.12.2009
Сообщений: 9
|
![]()
Здравствуйте ! возникла проблема с программой.
Делаю зачетную работу; Дана квадратная матрица NxM. Найти максимальные элементы каждой строки (N кратно количеству процессов). Написал программу, на 6 процессах на матрице 6х6 вроде бы работает нормально, находит максимальные элементы строки, но! ставит их не в том порядке как надо. пример матрицы 6 на 6 6 6 1 2 3 4 5 6 1 2 3 4 5 7 1 2 3 4 5 8 1 2 3 4 5 9 1 2 3 4 5 10 1 2 3 4 5 11 ответ; 6 12 и дальше уже по другому порядке 7 или 9 9 или 7 10 или 11 11 или 10 Подобные вещи и на 4 процессах при матрице 4 на 4. а вот и решение Код:
![]() Последний раз редактировалось mages; 24.12.2009 в 18:26. |
![]() |
![]() |
![]() |
#2 | |
Форумчанин
Регистрация: 13.12.2009
Сообщений: 272
|
![]() Цитата:
По теме - с MPI не знаком в принципе ![]()
Если я помог вам - порадуйте меня, нажмите на весы слева
![]() |
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 25.09.2009
Сообщений: 234
|
![]()
Это конечно не ответ на твой вопрос, но как минимум:
Твой кусок из функции Max: Код:
Т.е. Код:
|
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 25.09.2009
Сообщений: 525
|
![]()
код не читал, но как я понял тут речь про потоки(или процессы)
Цитата:
вся суть потоков как раз в том что они работают независимо друг от друга(ну в простых случаях), запускаются они как хотят и завершаются когда хотят если сделать ожидание завершения предыдущего потока то пропадет вообще весь смысл параллельного выполнения, будет тот же самый линейный main |
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 25.09.2009
Сообщений: 234
|
![]()
m0nax
в коде зря не разбирался (сам в MPI всего 40 мин) Про потоки ты прав - работают сами по себе и завершаются когда хотят, с процессами вроде история такая же. Но в коде испльзуются функция которая собирает даные от процессов в буфер, причем в правильном порядке (т.е. по порядку создания процессов) не зависимо от того какой из них закончил раньше. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 25.09.2009
Сообщений: 234
|
![]()
mages вновь по поводу функции Max: моя ошибка (все же правильно max1=B[0]
![]() Но для чего ты обрабатываешь ее через два for'a? Ты передаешь туда Bloc - который представляет собой строку из твоего B. Вполне можно и одним обойтись да и лишние параметры не надо будет передавать (количество строк) |
![]() |
![]() |
![]() |
#7 |
Регистрация: 23.12.2009
Сообщений: 9
|
![]()
так щас фором и б разберусь значит ) если что не так напишу.
а порядок ответов да , может быть разброс это нормально ) долго очень доходило |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 25.09.2009
Сообщений: 234
|
![]()
mages касательно твоего вопроса.
Ошибка: В каждом из твоих процессов вызывается функция Max которая в конечном итоге выводит на экран максимальное в строке. Но процессы(как обсуждалось выше) работают самостоятельно и кто будет первый кто последний не известно (поэтому порядок вывода ты не можешь контролировать). Ты используешь функцию MPI_Gather, которая должна собрать все данные с процессов. Но в дальнейшем ты ни где пользуешься результатом работы этой функции. Вариант решения: Введи еще одну переменную max в Main в ней сохраняй результат работы функции Max. И еще один массив (masMax[m]) для записывания этих данных. Процессы вычислят максимальные и отдадут их root'у. Который их собирает в masMax после чего выводит его. |
![]() |
![]() |
![]() |
#9 |
Регистрация: 23.12.2009
Сообщений: 9
|
![]()
так проблемка снова, если я делаю 6 процессов и матрицу 3 на 3 , то не находит максимум. но вот если max1=B[0] изменить то без разницы кажется, это и то правильные чтоле о0
|
![]() |
![]() |
![]() |
#10 |
Регистрация: 23.12.2009
Сообщений: 9
|
![]()
BleStaR помоги как програмку подправить
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
стандартная сортировка пузырьком. параллельное программирование. | lamont61 | Помощь студентам | 2 | 11.12.2009 15:12 |
Параллельное программирование | Renegad | Фриланс | 5 | 10.06.2008 18:11 |
Реализация модели эволюции клетки. Параллельное программирование на языке с. | Заноза | Помощь студентам | 4 | 03.04.2008 22:13 |
Параллельное программирование | Ugly | Win Api | 7 | 16.03.2008 15:33 |