Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Распределенное приложение

9.9K
20 апреля 2008 года
BelStudent
48 / / 18.03.2007
Кто знает наиболее лучшие алгоритмы написания распред приложений?

Мне нужно посчитать сумму очень большого ряда (10^14)
Вот как делаю я:
на сервере есть файлик с отдельным небольшим заданием каждому компьютеру из моей сети. И через RMI я попросту отсылаю это задание каждому компьютеру. А потом собираю результат.

Криво, но как по другому я не знаю.
63
20 апреля 2008 года
Zorkus
2.6K / / 04.11.2006
То, что ты называешь алгоритмом и описываешь в своем решении - лучше назвать архитектурой.
А именно распараллеливание конкретного алгоритма - для каждой конкретной задачи свое, и просто реализуется в рамках этой архитектуры.
Тебе нужен алгоритм распараллеливания вычисления рядов, или подходящая архитектура для распределенных вычислений вообще?
9.9K
20 апреля 2008 года
BelStudent
48 / / 18.03.2007
Цитата: Zorkus
То, что ты называешь алгоритмом и описываешь в своем решении - лучше назвать архитектурой.
А именно распараллеливание конкретного алгоритма - для каждой конкретной задачи свое, и просто реализуется в рамках этой архитектуры.
Тебе нужен алгоритм распараллеливания вычисления рядов, или подходящая архитектура для распределенных вычислений вообще?



На мой взгляд, распараллелить ряд легко как сумму нескольких более мелких рядов.
Но давай и то и другое. Хочу послушать разные варианты всего. И выбрать подходящее.

63
20 апреля 2008 года
Zorkus
2.6K / / 04.11.2006
А на мой взгляд, это сильно зависит от самого ряда (принципов образования последующих членов).
И еще - а зачем тебе сумма такого дикого количества членов ряда?
К чему такая точность?
Тут бы сперва сам ряд посмотреть, и задачу, для которой это все нужно.
А про архитектуру и технологии - это уже потом.
276
21 апреля 2008 года
Rebbit
1.1K / / 01.08.2005
Действительно оч хочется посмотреть сам ряд.
Ряды умеют сбегатся и тогда можно пощитать суму бесконечного ряда. Если нужно пощитать суму нескольких (сколь угодно) первых членов сбегающегося ряда то ето можно сделать по формуле и точность будет ограничеваться только розрядностю.
63
21 апреля 2008 года
Zorkus
2.6K / / 04.11.2006
Меня напрягает число - (10^14).
Если это число членов ряда, то, даже если допустить, что ряд идеально распараллеливается на произвольное число нодов кластера, то что мы имеем с точки зрения вычисления.
Пусть у автора в распоряжении 100 машин (не думаю, что и столько есть, и положим это обычные персоналки). Тогда на каждой считается по триллиону членов ряда.
Сколько операций нужно, в среднем, на вычисление одного члена? И сколько времени займет вычисление триллиона членов?
Я знаю много разных рядов, есть быстро/медленно (относительно первых) сходящиеся. Но чтобы для нормальной точности надо было брать столько членов - не слышал. Имхо, у тебя проблема скорей математическая.
350
22 апреля 2008 года
cheburator
589 / / 01.06.2006
Если считаются какие-то реальные статистические данные, они имеют свойство быть "перемешанными", гораздо проще взять выборочно, скажем, пару миллионов членов, посчитать их сумму, помножить на количество реальных членов (10^14) и поделить на подсчитанные члены.
Получим приблизительное значение, но с большой степенью достоверности.
Тем более, что при таком числе членов не факт, что можно обойтись 32 битами (а значит, вычисления усложняются, т. е. становятся дольше), или же, в случае плавающей точки, привносится ошибка, которая в общем-то сравнима с ошибкой при вышеуказанном методе вычислений.
ВАЖНО: все вышеуказанное верно при статистическом распределении данных, при случайной и представительной выборке.
9.9K
22 апреля 2008 года
BelStudent
48 / / 18.03.2007
People, спасибо за советы. но вы ищите частные случаи, чтобы посчитать сумму ряда (подсчет бесконечно убывающего, рекурентно-зависящего). Но моя задача сделать распеделенное приложение.
Возможно я приувеличил с величиной ряда, ну не 10^14, а 10^10 - это моя ошибка. Но суть не в этом.
Суть как правильно реализовывать распределенное приложение. А для примера можно взять простой ряд:

10^10
----
\ i^2
/
----
i=1
63
22 апреля 2008 года
Zorkus
2.6K / / 04.11.2006
Цитата: BelStudent
People, спасибо за советы. но вы ищите частные случаи, чтобы посчитать сумму ряда (подсчет бесконечно убывающего, рекурентно-зависящего). Но моя задача сделать распеделенное приложение.
Возможно я приувеличил с величиной ряда, ну не 10^14, а 10^10 - это моя ошибка. Но суть не в этом.
Суть как правильно реализовывать распределенное приложение. А для примера можно взять простой ряд:

10^10
----
\ i^2
/
----
i=1



Ну если у тебя каждый элемент ряда зависит ТОЛЬКО от своего индекса и других
сторонних данных (но не от предыдущих членов этого же ряда), то тогда -
любой клиент берет K членов начиная с N-го. Считает
каждый, складывает, отдает серверу результат. Все.

А технология - что технология. RMI вполне подойдет. Подойдут и сокеты,
каждый клиент слушает задание, получает, считает результат, шлет обратно.
Есть также спец. библиотеки для Grid Compution, в интернете можно легко найти.

505
27 апреля 2008 года
vAC
343 / / 28.02.2006
MPI - не плохая вещь, в МГУ на нем кластер есть (http://parallel.ru).
У меня там учетная запись есть, заходил через SSH. А чтобы ее получить, кажется нужно писать Воеводину...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог