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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2009, 20:12   #1
KorFunker
Новичок
Джуниор
 
Регистрация: 03.12.2009
Сообщений: 2
Стрелка как распределить нагрузку на несколько машин

Здравствуйте и заранее спасибо)
Суть:
-есть локальная сеть из нескольких (5) машин
-есть программа обсчета гидродинамических характеристик, лицензионная
-она нагружает полностью одну машину, но все равно обсчет длится ~ месяц
-Нужно сделать так, что бы вся сеть пахала на эту прогу, не влезая в саму прогу.
-я только начал изучать С++. До этого писал только программки для себя под AutoCAD, язык - AutoLisp, Visual Lisp, ознакомился недавно с Assembler, ну что бы просто понять тык сказать от куда ноги растут. ( ну и Fortran мне в институте преподавали)
-Прошу не программу готовую, а просто, люди добрые укажите путь, куды идти и в каком направлении, что изучить, и как примерно выглядит алгоритм и последовательность действий для решении этой задачи, если это вообще возможно.

Последний раз редактировалось KorFunker; 03.12.2009 в 20:15. Причина: букивку забыл))
KorFunker вне форума Ответить с цитированием
Старый 03.12.2009, 20:34   #2
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
она нагружает полностью одну машину, но все равно обсчет длится ~ месяц
Нужно сделать так, что бы вся сеть пахала на эту прогу, не влезая в саму прогу.
Если программа написана для однопроцессорной машины, то без ее переписывания, заставить ее работать на нескольких процессорах, а тем более на нескольких машинах никак не получится.

Цитата:
Прошу не программу готовую, а просто, люди добрые укажите путь, куды идти и в каком направлении, что изучить, и как примерно выглядит алгоритм и последовательность действий для решении этой задачи, если это вообще возможно.
В вашем случае, из машин с сети можно организовать кластер.
Переписать программу, распараллелив ее, организовать распределенные вычисления.

Следует изучить следующие направления:
1. распределенные вычисления.(http://ru.wikipedia.org/wiki/%D0%A0%...BD%D0%B8%D1%8F)
2. параллельное программирование.(http://www.intuit.ru/department/se/parallprog/)
3. Grid-технологии.
4. Библиотека MPI (или аналог).
5. Какой-нибудь язык программирования (С++ подойдет).

Удачи.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".

Последний раз редактировалось Daramant; 03.12.2009 в 20:37.
Daramant вне форума Ответить с цитированием
Старый 03.12.2009, 20:56   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
она нагружает полностью одну машину, но все равно обсчет длится ~ месяц
-Нужно сделать так, что бы вся сеть пахала на эту прогу, не влезая в саму прогу.
если программа сама не может распределять расчет, то вряд-ли... но если вы сами сможете расчет разделить на независимые части, то тогда на каждой машине запускаете свой экземпляр программы со своим куском расчета.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 04.12.2009, 13:49   #4
KorFunker
Новичок
Джуниор
 
Регистрация: 03.12.2009
Сообщений: 2
По умолчанию

Спасибо за ответы)) Будем изучать)
Да, вот еще вопрос.
Программа поддерживает разбитие вычислений на отдельные части. Эта функция работает для многопроцессорных машин. Однако у 2х-ядерных машин используется 50%, а у 4х - 25% на каждое ядро. Если бы хотя бы удалось ядра загрузить на 100%!
KorFunker вне форума Ответить с цитированием
Старый 04.12.2009, 21:18   #5
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
Программа поддерживает разбитие вычислений на отдельные части.
Как осуществляется разбиение на отдельные части?
Цитата:
Эта функция работает для многопроцессорных машин.
Вы это взяли из справки?
Возможно необходимо изменить настройки программы и настроить ее на то кол-во процессоров, которое имеется. (смотрите справку).
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 13.08.2010, 23:50   #6
senoifort
 
Аватар для senoifort
 
Регистрация: 12.08.2010
Сообщений: 6
По умолчанию

Ты на данном этапе можешь ускориться купив к прмеру 4-х процессорную машину, установить линукс и скачnm с сайта intel.com intel fortran. С помощью команды ifort (пр. ifort -parallel *.f90) получаешь ускорение. Те расчёт у тебя будет идти в лучшем случае 1/4 месяца. Это на много быстрее, чем у тебя в данный момент. Иначе нужно использовать предыдущие способы. При их использовании ты выжмешь из программы максимальную производительность. Вот только, у тебя будет большая проблема разобраться в гидродинамической модели, и распараллелить на это у тебя может уйдти большое количество времени до 1года(знаю на своём опыте) Ибо расчёт гидродинамических характеристик происходит имеет зависимости не только по времени, но и по пространству. Удачи!
senoifort вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как объединить несколько ячеек katlis Microsoft Office Excel 9 12.01.2009 22:29
Нет доступа к компу с других машин HIC Операционные системы общие вопросы 4 21.11.2008 14:38
Есть список доменных машин. Узнать кто залогинен. luckyfuck Общие вопросы Delphi 2 05.11.2008 15:12
Знает ли кто на каком языке пишут программы для стиральных машин? master_tra Свободное общение 4 15.06.2008 22:31
Как объединить несколько ячеек katlis Microsoft Office Excel 1 02.08.2007 23:31