Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2016, 12:41   #1
Olga Fedorova
 
Регистрация: 07.11.2016
Сообщений: 4
Лампочка Параллельная вычислительная деятельность компьютеров, с помощью сокетов в Delphi

Необходимо соединить несколько компов по локальной сети через сокеты в Delpi(локальный параллелизм) и выполнить запуск программы. Запускается программа на сервере, передается клиентам, и выполняется параллельно на всех компах. проверить скорость выполнения операции.
Я их соединила, но не могу разобраться, как выполнять программу одновременно. Помогите с кодом,пожалуйста.
Olga Fedorova вне форума Ответить с цитированием
Старый 07.11.2016, 12:50   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Что программа делает? какой алгоритм реализован?
делал "распределенного" Мандельброта на 1 курсе на яве...
4 сервера вычислений и 1 клиент - клиент разбивает канву на зоны и отдает координаты зон серверам - сервера обратно отсылают отрендереный битмап - клиент сшивает битмапы на канву

было реально быстрее в 4 раза чем на 1 компе...
а компы в то время были P2Celeron 333Mhz
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 07.11.2016, 13:11   #3
Olga Fedorova
 
Регистрация: 07.11.2016
Сообщений: 4
По умолчанию

программа любая,
пишешь проги одинаковые
На несколько компов
Только они кусок вычислений делают, а не все
А потом вычисления складываются на сервере .
главное реализовать совместную вычислительную деятельность между компами. У меня есть отдельно клиент и отдельно сервер, нужно часть кода, для передачи и запуска программы.

Последний раз редактировалось Olga Fedorova; 07.11.2016 в 13:52.
Olga Fedorova вне форума Ответить с цитированием
Старый 07.11.2016, 15:10   #4
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

[телепатия]
Сервер должен отслеживать момент подключения клиента и отсылать ему данные о его части работы (они напрямую зависят от задачи т. е. это никак не "копируем любую прогу N раз и оно само себя распараллелит").... клиент выполняет свою часть и отправляет серверу ответ
Сервер должен откуда-то (от главного клиента) получать исходные данные и делить её на части, которые и будут отправлены вычисляющим_клиентам... так же, сервер должен хранить данные вида "часть задачи - статус", где статус - не решена, в процессе и решена... статус "в процессе" нужен т. к.может произойти ошибка и клиент никогда уже не окончит работу... с этим статус, сервер может как-то (по таймауту) переводить куски задачи из "в процессе" в "не решена" и др.клиенты смогут снова попытаться вычислить этот участок
Исходную задачу стоит дробить на подзадачи не по объёму, а по предполагаемому времени решения... это сложнее, но тогда нагрузка распределяется равномернее и отказы наносят меньший ущерб..... если брать пример с вычислением фрактала, то я бы не делил на 4 равных части, а делил бы, например, на 16 частей, чтоб:
а) в случае отказа, пришлось меньше пересчитывать
б) самый быстрый сервер (в силу любых причин) мог выполнить не свои 4\16, а 5\16, скажем
Кроме того, если у нас много подзадач, то очень легко посчитать суммарный прогресс вычислений. Конечно же, если подзадачи несут в себе много данных, то это замедлит процесс, как и в ряде др. случаев.

Очень многое зависит от самой задачи, поэтому никто вам не поможет, если не назвать что конкретно ваша программа вычисляет. Расчёт движения атомов, моделирование популяций животных, майнинг криптовалют - всё это распределённые вычисления, НО они кардинально отличаются друг от друга.
[/телепатия]
GreenWizard вне форума Ответить с цитированием
Старый 08.11.2016, 07:56   #5
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Цитата:
Сообщение от Olga Fedorova Посмотреть сообщение
программа любая.
Если делать можно все что угодно я предпочту Sleep... тем более этот алгоритм легко параллелится
спать распределенно - это круто и энергоэффективно...

а ты вот попробуй факториал распараллелить
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 08.11.2016, 13:08   #6
Olga Fedorova
 
Регистрация: 07.11.2016
Сообщений: 4
По умолчанию

Например,программа подсчета простых чисел от 1 до 100000
Olga Fedorova вне форума Ответить с цитированием
Старый 08.11.2016, 14:48   #7
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Прекрасно, простые числа - простой алгоритм: берём кластер с разделяемой памятью.......)
Как сама бы решала? у меня стойкое ощущение, что ты не понимаешь что к чему и думаешь что есть одно универсальное решение, которое сразу подойдёт и твой код заработает....
код твой, кстати, никто не видел, поэтому конкретных советов не будет
GreenWizard вне форума Ответить с цитированием
Старый 08.11.2016, 15:08   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Например,программа подсчета простых чисел от 1 до 100000
Таки в чем проблема? Делите этот диапазон на кол-во рабочих компов, отправляете границы работягам, ждете пока они свой обработают и пришлют ответ, складываете и выводите. Это ж даже не программирование, а простейшая логика.
p51x вне форума Ответить с цитированием
Старый 17.11.2016, 13:24   #9
Olga Fedorova
 
Регистрация: 07.11.2016
Сообщений: 4
По умолчанию

Подскажите, пожалуйста, я не совсем понимаю, как это реализовать. Можно ли подключить библиотеку PPL.? Помогите конкретно с кодом, хотя бы структуру его
Olga Fedorova вне форума Ответить с цитированием
Старый 17.11.2016, 13:56   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Что вы не понимаете? Я ж все описал. Откройте книжку или гугл про сокеты и прочитайте как передавать и принимать числа, остальное элементарщина.

Структура описана постом выше, за исключение ввода/вывода.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потребители сдали в ремонт 16 компьютеров. Из них 8 нуждают- ся в мелком ремонте. Мастер берет 6 компьютеров. Какова вероятность т now2 Помощь студентам 8 18.03.2014 09:47
Вычислительная геометрия, Delphi/Pascal holy_0dmin Фриланс 9 24.04.2011 07:26
Вычислительная математика Delphi milawka Фриланс 3 14.04.2011 15:21
Параллельная программа для метода холецкого с помощью openMp и mpi игоревна Помощь студентам 0 06.06.2009 20:47
отправка e-mail с помощью сокетов andrey4623 PHP 3 27.06.2008 13:20