LINUX.ORG.RU

Железо для распределенных вычислений, PVM или?


0

0

День добрый. Встал очень серьезный вопрос:

Есть программа, осуществляет просчет данных(подбор нужных коэффициентов для спец. формул). Для просчета 2 оптимальных коэффициентов требуется более 10 часов работы на 12 компьютерах по 2Ghz,2Gb ОЗУ. Одно исполнение программы порядка 5 минут.

Как на аппаратном уровне ускорить исполнение программы? Input-Output занимает не более 10% рабочего времени.

Была идея реализации кластера компьютеров. Идея отпала ввиду нереалистичности заставить программистов писать код "специальным образом".

Имеет ли смысл покупать мощные сервера с большим количеством процессоров и оперативы? Где почитать информации? Есть ли возможность как-то распараллелить или что-то в этом роде.


>Идея отпала ввиду нереалистичности заставить программистов писать код

Уволить быдло, нанять настоящих.

anonizmus
()

"кластер" из обычных писюков выйдет куда дешевле чем "мощный многоголовый сервер".

dk-
()

Уже все корпорации признали, что кластеры дешевле и эффективнее, чем один очень мощный компьютер.

А ваша задача реализуема на OpenCL?

linux4ever
()

>Имеет ли смысл покупать мощные сервера с большим количеством процессоров и оперативы?

Ваши горепрограммисты завопят, что распараллелить под 48 ядер нереально.

linux4ever
()

Ну если оно уже распараллелено на 12 компьютеров, то попытки заставить их считать вместе скорее всего только затормозят процесс.

А так --- переписать программу более грамотно, использовать более качественный оптимизирующий компилятор, добавить ещё компьютеров.

dn2010 ★★★★★
()
Ответ на: комментарий от linux4ever

Изначальный язык написания программы: C. Никто и не задумывался о параллельности изначально. Мы столкнулись с тем, что нужно исполнить программу быстрее.
Насчет 12 машин: "параллельности" и нет, просто н каждой машине запускалась одна и таже программа только с разными параметрами. На каждом компе собирались результаты и обрабатывались уже отдельным ПО.

Сейчас не знаю куда и двигаться. Необходимо увеличить скорость исполнения программы. Еще раз повторюсь, перейти на другой язык программирования, встраивать директивы(а если я правильно понял, что MP, MPI, PVM и прочее предлагают пересматривать код) - не реально для нас. Программисты должны писать на чистом C, max - C++.

sglex
() автор топика
Ответ на: комментарий от sglex

> "параллельности" и нет, просто н каждой машине запускалась одна и таже программа только с разными параметрами. На каждом компе собирались результаты и обрабатывались уже отдельным ПО.

тогда ответ очевиден -- надо поставить более мощное железо

Reset ★★★★★
()
Ответ на: комментарий от sglex

А где узкое место? Загрузка процессора? 100%? Память 100%?

Если нет - может поможет виртуализация?

anonymous
()
Ответ на: комментарий от anonymous

Нахера? Если программа запускается в нескольких экземплярах, то на 4х ядернике и надо запускать 4 экземпляра проги. Каким боком тут виртуализация?

Reset ★★★★★
()
Ответ на: комментарий от sglex

> Еще раз повторюсь, перейти на другой язык программирования,
> встраивать директивы(а если я правильно понял, что MP, MPI, PVM и

> прочее предлагают пересматривать код) - не реально для нас.


У вас C. Это хорошо. Рекомендую нанять 1(одного) специалиста по параллельным вычислениям на базе того же MPI. Или вообще консультанта который научит самого "талантливого" в рабочей группе.

Пусть ваши гении пишут основную часть кода в виде "библиотеки", точнее даже пусть в MPI программе кодят в определенные файлы и не лезут в MPI обвязку которую будет кодить этот самый 1 человек.

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

Плюсы - стандратное решение, mPI , позволит запускать ваше изделие на стандартных MPI кластерах, которые опять же можно собрать по необходимости в любом гадюшнике "занедорого".

kernel ★★☆
()
Ответ на: комментарий от linux4ever

> Ваши горепрограммисты завопят, что распараллелить под 48 ядер нереально.

А самое главное, абсолютно не нужно. Ибо "Одно исполнение программы порядка 5 минут".

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

Скрипт должно быть легко написать на шелле или на перле + ssh. Когда-то такую хрень проворачивал.

Manhunt ★★★★★
()
15 декабря 2009 г.

[OpenCL][NV/ATI]

Я правильно понимаю, что сейчас и у NV, и у ATI есть бесплатные OpenCL SDK, поддерживающие 64+битный флоат (при наличии соответствующей видеокарты)?

Где-то читал, что на некоторых новых карточках от NV есть поддержка 128-ми битного float, вопрос - если ты поддержка таких типов в OpenCL от NV?

Работает ли OpenCL у ATI & NV с открытыми драйверами?

Для некоторых задач должно подойти.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.