![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
sandello |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 18.5.2005 Где: Пермь Репутация: нет Всего: 2 |
Прежде, чем распараллеливать, просто реши задачу. Тут решения я не увидел.
-------------------- ![]() |
|||
|
||||
jimur |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 21.4.2006 Репутация: 1 Всего: 3 |
Как это нельзя параллелить?
Берешь данную ячейку, ее строку и столбец и отправляешь на расчет Результат - или точно число или варанты для ячеек Отлично параллелится на 9 потоков. Тебе алгоритм написать? ![]() |
|||
|
||||
onsh76 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 20.11.2005 Где: Beautiful BC Репутация: 4 Всего: 5 |
В добавление к сказанному jimur:
предлагаю разбить бизнес логику на stateless - (там где не требуется тракировать статус отслеживаемой логики) и statefull(соотв-но наоборот). Сделай stateless компоненты распределенными, а statefull будет давать задания распр-ным компонентам по мере надобности и отслеживать результаты вычисления. |
|||
|
||||
zone51 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
jimur,
Понимаете, я никак не могу вьехать: распарралелить, это значит что некоторые действия вычисляются парралельно..но вы же посмотрите, ну возьму я как вы сказали ячейку, ну отправлю на вычисление, но в этот же момент никакая другая ячейка вычисляцца не сможет, ведь пример: вычисляю ячейку (1,1) и парралельно вычисляю (1,5). На 2 удаленные машины одновременно посылаются кроме других аргументов одна и та же строка, первая строка, в которой еще нет ячейки (1,1) и (1,5). На первой машине получится результат допустим 5, и вторая машина даст тот же результат, ведь она еще не знает что первая дала 5, строка на обе машины послалась исходная. Вот где вопрос, ведь все цифры в столбцах, строках и регионах должны быть разные. p.s. А алгоритм писать не надо..просто я хочу просечь несколько логических фишек. onsh76,
А о каких соб-но компонентах идет речь? или в общем смысле? я буду делать на RMI, то есть по удаленным машинам рассаживаю объекты, а на клиентской запускаю приложение, которое соб-но и общается с удаленными объектами. Это сообщение отредактировал(а) zone51 - 5.5.2006, 12:22 -------------------- The truth is out there |
||||
|
|||||
jimur |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 21.4.2006 Репутация: 1 Всего: 3 |
ээх...
что-то типа этого:
зы: вместо отправки/ожидания можно использовать несколько локальных потоков с удаленным вызовом зы: модель можно улучшить чтобы в результатах были альтернативы, что ускорит решение Это сообщение отредактировал(а) jimur - 5.5.2006, 20:45 |
|||
|
||||
zone51 |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
jimur,
Извините нифига не понял, почему 27 элементов?
Неужели я так плохо знаю RMI? Я думал там просто пойдет разбиение задачи на подзадачи, и уже эти подзадачи по машинам..
Это функция RMI или условное обозначение пользовательской функции? Спасибо. -------------------- The truth is out there |
||||||
|
|||||||
jimur |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 21.4.2006 Репутация: 1 Всего: 3 |
Всего 9*9 = 81 элемент При расчете блока 3*3 нужно учитывать строку и столбец в которые он попадает, соотвественно столбец из трех рядов чисел и строка из трех рядов.
Подзадачей и будет обработка данного набора данных. Итого можно обрабатывать на 9 машинах. Второе Методы написать? ;) |
|||
|
||||
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
jimur,
Все, понял как вы делали, а скажите, разве теоретически нельзя по тому же принципу распарралелить на 81 машину? я не собираюся так делать, просто интересно. И самый главный вопрос так это все те же "грабли", с которых я так и не могу слезть: посылаю я все 9 блоков одновременно? Что значит ждем результатов и собираем значения? но ведь опять же, где гарантии того, что во всех строках и столбцах все цифры будут разные?
Ну послал я все блоки, они вычислились, но ведь на все блоки я послал Исходные данные, без учета результата просчета других блоков.Как быть? Обьясните пожалуйста Это сообщение отредактировал(а) zone51 - 6.5.2006, 22:47 -------------------- The truth is out there |
|||
|
||||
Ivan Kolesnikov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 9.3.2005 Где: г. Новокузнецк Репутация: 1 Всего: 6 |
Привет! Я понял идею jimur.
Он предлагает разбить задачу на 9 (на большее число нельзя) подзадач, решения которых не влияют друг на друга, далее получаем ответ от этих задач, объединяем его вместе и создаем новых 9 задач и т.д., если решение одной из подзадачи не может быть найдено, то производим откат. Хотя возможно на некотором шаге нам удастся создать только меншьшее число не пересекающихся подзадач. Разбивать нужно обяхательно так, чтобы решения не влияли друг на друга. Например для приведенного примера можно искать следующие решения параллельно (выделены *)
--------------------
|
|||
|
||||
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
Ivan Kolesnikov,
мысль перехватил, опробовал. все хорошо да вот загвоздка: что делать если в ходе вычисления очередной цифры оказалось, что эта цифра число 10, т е все цифры 1-9 есть либо в строке либо в столбце либо в регионе? Буду очень благодарен за помощь. Помогите если можно. Это сообщение отредактировал(а) zone51 - 8.5.2006, 22:33 -------------------- The truth is out there |
|||
|
||||
jimur |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 21.4.2006 Репутация: 1 Всего: 3 |
Хорошая задачка
![]() Решение ниже ![]() Зачем выносить на удаленные машины то, что локально делается на 10-30ms ![]()
zone51, с тебя причитается ;) |
|||
|
||||
zone51 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
jimur,
Само собой
Ну поймите вы, задача у меня такая, поставили и все тут..ща разберусь с вашим алгоритмом, огромное спасибо..Насколько я понял это нераспределенное решение..эххх.. ![]() зы. посмотрел исходник и офигел, мне до такого уровня еще расти и расти..огромное спасибо, но перед тем как я разберусь с исходником, может подскажите что делать со случаем 10-ки если на каждом шаге выбираются независимые клетки из каждого района? Это сообщение отредактировал(а) zone51 - 9.5.2006, 00:00 -------------------- The truth is out there |
||||
|
|||||
jimur |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 21.4.2006 Репутация: 1 Всего: 3 |
Так это же рутина ...
1. делаем сериализуемой задачу:
2. заходим сюда и внимательно читаем RMI tutorial 3. создаем удаленный процессор
4. из солвера делаем удаленный сервер
Это сообщение отредактировал(а) jimur - 9.5.2006, 00:39 |
||||||
|
|||||||
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
Уважаемый jimur, спасибо огромное, мне это очень помогло, но все таки, подскажите пожалуйста, Как разбивать задачу на потоки, алгоритм, вот в чем вопрос. Огромное спасибо.
Как правильно распарралелить задачу, вот в чем вопрос, я просто застрял в начале ![]() ![]() Это сообщение отредактировал(а) zone51 - 9.5.2006, 10:21 -------------------- The truth is out there |
|||
|
||||
jimur |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 21.4.2006 Репутация: 1 Всего: 3 |
Так в алгоритме уже заложено это разбиение.
Мы имеем 9 _независимых_ задач, которые можно испольнять параллельно. Код с потоками попозже кину - времени пока нет. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |