Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

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

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

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

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

Очень многое зависит от самой задачи, поэтому никто вам не поможет, если не назвать что конкретно ваша программа вычисляет. Расчёт движения атомов, моделирование популяций животных, майнинг криптовалют - всё это распределённые вычисления, НО они кардинально отличаются друг от друга.
[/телепатия]
__________________
Группа ВК - https://vk.com/gw_inc
Почта - forwork.anton@gmail.com
GreenWizard вне форума   Ответить с цитированием
Старый 08.11.2016, 08:56   #5
Slym
Профессионал
 
Регистрация: 07.12.2011
Адрес: Siberia
Сообщений: 1,003
Репутация: 659
По умолчанию

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

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

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

Прекрасно, простые числа - простой алгоритм: берём кластер с разделяемой памятью.......)
Как сама бы решала? у меня стойкое ощущение, что ты не понимаешь что к чему и думаешь что есть одно универсальное решение, которое сразу подойдёт и твой код заработает....
код твой, кстати, никто не видел, поэтому конкретных советов не будет
__________________
Группа ВК - https://vk.com/gw_inc
Почта - forwork.anton@gmail.com
GreenWizard вне форума   Ответить с цитированием
Старый 08.11.2016, 16:08   #8
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 10,209
Репутация: 1609

icq: 216409213
По умолчанию

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

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

icq: 216409213
По умолчанию

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

Структура описана постом выше, за исключение ввода/вывода.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потребители сдали в ремонт 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




13:33.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru