![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Georg4 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 961 Регистрация: 2.11.2002 Репутация: нет Всего: 10 |
В двух словах.
С помощью этого дела нужно сделать прогу окторая будет распараллеливать задачу перемножения 2-х матриц на от 3 до 8 машин. Я смог пока только вежду 2-мя машинами. Я так думаю, что на 8-ми тачках лежат удалённые процедуры а на машине которая вызывает процедуры просто нужно всем послать кусок матрицы а потом скомпоновать его. Но я до конца не могу это додумать. Кто-нибудт делал нечто или знает как? -------------------- Никто и никогда не должен решать одну проблему дважды |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Лучше наоборот, на сервере есть процедура к которой обращается клиент и получает порцию данных, обрабатывает, а затем вызывает другую процедур возвращает результат.
В чем у тебя возникли сложности? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Georg4 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 961 Регистрация: 2.11.2002 Репутация: нет Всего: 10 |
Здоров, дружище. Сто лет тебя не видел.
Я не могу вьехать в организацию программы если клиентов больше 1-го. Тобишь я без проблем сделал между 2-мя машинами и не знаю как сделать между 3-мя - 8-ю. -------------------- Никто и никогда не должен решать одну проблему дважды |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Каждый клиент должен иметь уникальный идентификатор. Пусть каждый клиент имеет свой ID-шник (удобно для этих целей использовать UUID), ID может быть как постоянным так и сеансовым. Клиент соединяется с сервером и передает свой ID, сервер выдает ему порцию данных на обработку и помечает у себя, что клиент такой-то взял такую-то порцию данных на обработку. Когда клиент обработает данные, он передает серверу свой ID и обработанные данные. Надо будет добавить метод отказа от обработки, например клиента выключают до того как он закончил обработку, тогда он отказывается от обработки и уведомляет об этом сервер.
Плюс надо будет еще следить за тем чтобы один клиент не запрашивал новые данные, пока не обработал старые, проверять если обработка идет дольше определенного времени, то считать что клиент отсоединился и данные надо снова вернуть в пул не обработанных данных. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Georg4 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 961 Регистрация: 2.11.2002 Репутация: нет Всего: 10 |
Как клиент будет передавать свой ИД?
Сокеты параллельно включить? А мысль про ID мне понравилась, значит клиент вызывая удалённую рпоцедуру перед этим отправляет серверу свой ID. Иперед началом работы сервера задавтаь окличество клиентов из расчёта чтоб не больше, а не меньше их не будет. То есть вводить количество клиентов и из IPшники он же и будет IDшником. -------------------- Никто и никогда не должен решать одну проблему дважды |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
Раз уж взялись за RMI, то нелогично про сокеты думать. RMI придумали, чтобы про сокеты не знать вообще. Это надстройка над сокетами, для облегчения жизни программиста. RMI - это аналог синхронного обращения к локальному методу, но более медленный и менее надежный. И это синхронное обращение, т.е. послав запрос поток ожидает немедленного ответа. Чтобы сделать обработку асинхронной надо использовать мессажинг. Выглядело бы красиво. Центральный компьютер может не знать, сколько у него добровольных помошников, которым можно дать куски на обработку. |
|||
|
||||
| LSD |
|
||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
В качестве параметра метода, что-то наподобие:
Можно но ИМХО не стоит, сервер должен быть готов раздавать задания и принимать ответы, а вот клиентов ему контролировать вовсе не обязательно. Клиент присоединился, получил свою порцию данных, обработал, вернул результат и дальше может снова повторить цикл, а может прекратить обработку. Таким образом мы можем динамически менять производительность. Надо подключили еще клиентов, надо отключили. Только на сервере надо следить, за заданиями которые слишком долго находятся в обработке (это на тот случай если клиент неожиданно отсоединился и не опвестил об этом сервер. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||||
|
|||||||
| Georg4 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 961 Регистрация: 2.11.2002 Репутация: нет Всего: 10 |
Да, но ты понимаешь, задача тут такова, тчо нужно в одном варианте перемножить 2 матрицы.
Если мы не знаем соклько клиентов будет изначально, мы не знаем на сколько частей рубить исходные матрицы. -------------------- Никто и никогда не должен решать одну проблему дважды |
|||
|
||||
| Metal_Heart |
|
|||
|
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: нет Всего: 12 |
Зачем?
Делишь свою задачу на n частей, затем каждому клиенту отдаешь по одной части. По мере выполнения предыдущей - отдаешь следующую часть. Иначе, допустим у нас один клиент, ты всю задачу по перемножению возлагаешь на него, он (клиент) посчитал, а данные отправить не успел (сломался), в результате - мы теряем много времени! Или ты отдал всю задачу одному-двум, а через пару секунд появилась возможность использовать ещё десяток клиентов? Это сообщение отредактировал(а) Metal_Heart - 21.12.2005, 10:00 -------------------- не стыдно учиться, а стыдно не учиться |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Поддерживаю. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Georg4 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 961 Регистрация: 2.11.2002 Репутация: нет Всего: 10 |
Я ненмого не опнял, как это можно задачу с перемножением матриц АхВ строк поделить на n частей?
Нужно всё ранво задать максимальный лимит количества клиентов. И тогда рпосто можно дать одному клиенту задание 2 раза. А как бы выглядело это деление на n частей в работе. Опишите по шагам, я не представляю. Ну допусим у нас к клиентов и к>1. Что тогда? Как реализуем? Давайте по пунктам. -------------------- Никто и никогда не должен решать одну проблему дважды |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Разбивать эту задачу на составные части имеет смысл, только если размерность матриц велика, поэтомы полагаем что A и B велики. Умножение матриц состоит из перемножения 2-х векторов, вот пусть элементарным заданием и будет перемножение 2-х векторов.
Это сообщение отредактировал(а) LSD - 21.12.2005, 18:11 -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |