Pull to refresh

Comments 43

приведите возможные примеры применения в реальной жизни
Параллельные вычисления на кластере с возможностью предоставления доступа через веб. Реальная задача выполняемая на реальном кластере. Реализация на яве, правда без MPJ.
ну типа того, только в данном примере — «зачем коню пятая нога»? веб-приложения по своей архитектуре хорошо паралелятся и это решается без MPJ, интересно что-то более приближенное к реальности.
Возможно, вопрос недопонял, но чем научные изыскания плохи? Разумеется, с numerics возможно будут какие-то проблемы (о чём пишут создатели на сайте), но как дополнительное средство в случае полного незнания (и нежелания тратить N лет для достижения определённого уровня) С и хорошего знания Java вполне можно использовать.
Лично я буду пробовать свои исследования переводить на Java. В частности, сейчас пробую себя в местном проекте — параллельном вейвлетном сжатии с нашими дополнительными плюшками. Пока не вижу возможных проблем с использованием Java.

С сайта MPJ:
«Mark Baker, Bryan Carpenter, and Aamir Shafi, MPJ Express Meets Gadget: Towards a Java Code for Cosmological Simulations, Submitted to Special Session ParSim in Euro»

+ к тому, когда я читал переписку официального листа сайта, возникали вопросы вполне исследовательского плана. Значит, средство востребовано. Однако, в связи со сложностю (=>невостребованностью) дисциплины как таковой и высокого порога вхождения о нём всё ещё мало кто знает.
Пока не вижу возможных проблем с использованием Java.


Первое, что приходит на ум: низкая производительность операций с плавающей точкой; борьба в gc за память (вспоминаем, как при знакомстве с Java нам рассказывают, почему для сложения строк придумали StringBuffer); отсутствие поддержки OpenMP (запустить 8 воркеров на 8-ядерной машине и утверждать, что «будет не хуже, чем с OpenMP» — ересь).

Я бы такое применение JVM рассматривал разве что «for fun» или «на курсовую».
Советую почитать java-grande.org. Существует несколько групп специалистов, специально разрабатывающих новые парадигмы использования Java для HPC с учётом проблем производительности и уже добились некоторых успехов. Как я уже упоминал, возможны действительные проблемы, но, как утверждает автор и несколько юзеров, проблема возникает с некоторым неудобством использования самого MPJ :-)
Кроме того, MPJ — это обёрнутая нативная библиотека MPI. Как и JOMP — обертка для OpenMP. Так что поддержка есть.

Насчёт «for fun» — может быть, но технологии развиваются, возможно, эти группы специалистов придумают что-то, от чего С просядет? :-)
Параллелинг веб-приложений и пареллелинг алгоритмов для обработки данных это не одно и тоже. MPJ создан именно для реализаций алгоритмов параллельной обработки данных, где требуется высокая скорость маппинга задач на ноды. Класс задач который решается такой либой сугубо математический.
Да я тут слышал, что математический задачи, реализованные с помощью специальных либ и так параллелятся сами по себе.
отлично! попробую.как раз возникла задача распараллеливания процессов.не хотелось делать на С++.посмотрим как Java справится
Если выбор языка целиком на вашей совести — посмотрите как справится erlang.
Реальный пример… Вы пишете прототип быстрый на java. потом понимаете, что добавив 10 строк получите версию для кластера, а на плюсы будите месяц переписывать. Для задачи счетной на 100+ часов но менее 1000 я бы и C# и java бы использовал.
А вообще заголовок звучит как «Fortran как язык для создания Rich Web Applications»
На самом деле я гнусно украл первую часть заголовка из статьи авторов MPJ. Остальное всё моё — честно. :-)
Ну и подходящий же ты пример выбрал… :D
Начинать надо с самых-самых азов :-) Дальше будет больше, как я буду продвигаться в своем исследовании.
Ты в ирце почаще появляйся, там поспрашиваю как съездил :)
В контексте параллелизма душа должна тянуться не к Java, а к Erlang или Limbo.
Начальство не слышало — значит не нужно. Да и в большинстве (у нас в России) случаев платят за время, а не за эффективность. Таким образом, адекватный выбор технологий никому не нужен.
Честно — вам следует найти другое начальство. Оно того стоит.
Erlang был создан с другой целью.
если очень коротко… Параллелизм- не цель. Цель решить задачу. Если задача решается в 1 поток, то не какого параллелизма не нужно.
Когда говорят о параллельных вычислениях сразу имеют ввиду, что просто считать много надо. А Erlang- это все таки во первых язык не математиков, которые в большинстве и пишут софт, которому нужен кластер.(им и с/fortran хватает. и как правила дальше массивов, списков, циклов и условий им язык знать не надо.)
А во вторых- erlang все таки создан для систем реального времени типа атс… а не для числодробилки. попробуйте на коммутаторе проводить расчеты… они просто не для того. Производительность+многопоточность+ многомашинность. вот зачем эта библиотека нужна.!!!

По этому обертка над mpi на java- это очень хорошая вещь.
Когда я был в летней школе по HPC, организуемой Microsoft, нам вообще рассказывали и показывали, как использовать в параллельных вычислениях Хаскелль. Рассказывал Саймон Джонс, так что все верили :-)
Но, если честно, в одном бы разобраться, а уж потом за функциональные языки браться.
Расскажите, сильно ли ощущалась разница в уровне иностранных и русских лекторов там?
Для удобства сошлюсь на сайт с материалами школы.

Общие впечатления двоякие. Это был первый опыт Microsoft в организации подобных школ в России, длилась она всего неделю, попахивало маркетингом. Поназвали элиту Microsoft, начиная с вице-президента Microsoft Research и заканчивая Саймоном Джонсом.
Двоякость впечатления основывалась на не очень хорошей проработанности материалов. Лекторы все были замечательные, особенно понравились господа Грановский (который, хоть говорил тихо и в бороду, но по интересным темам), Болдырев и Абрамов. Показали нам тестовые образцы новых супермикросхем для кластеров, разрабатываемые в России :-)
Я могу сказать, что лекторы ВСЕ были профессионалами высшего уровня. Саймон Джонс — душка, потрясающе ведёт себя на «сцене» :-).

Различий в уровне между нашими и зарубежными лекторами не замечал. За эту неделю они умудрились впихнуть в наши головы множество полезных и не очень знаний. Но, судя по проведенному мной соцопросу, «параллельный хаскель не осилили» :-)
Спасибо, значит стоящее дело. Посмотрим, насколько понравится школа в Нижнем, делает её на этот раз Intel, насколько я понял.
Была пара ребят-завсегдатаев Интеловских школ. У Интела всё это на поток уже поставлено и более практическая направленность. Рекомендую. :-)
Осталось чтобы злобная комиссия оценила мои «планы на ближайший год и пять лет».
Сейчас расскажу страшную историю — как я проходил в школу Microsoft.
Проходил я её два или три месяца. Звонили, терзали вопросами на английском и русском, проверяли. Девочки очень приятные в Microsoft :-)
Но потом оказалось, что не добираю четвертинку балла до нужных 3 баллов. Пришлось задействовать связи, потому что ну очень хотелось. Прошёл.

Во время школы слышал краем уха разговор одного из организаторов школы (русского товарища) с аспирантом: «знаешь, Лёш, я как вас увидел троих, сразу без конкурса вам галочки поставил, что вы прошли».
Между тем, эти аспиранты были тухлые и поехали, как сами признались, for fun.

Однако их количество статей и блат сделали своё дело. Поэтому, если хочешь, чтобы тебя брали на любые школы в России, надо иметь:
1) блат
2) пару статей (неважно каких)

Именно в этом порядке. Тогда и присылать будут раньше письма-уведомления, и свои источники всегда будут. В России многие школы курируют одни и те же люди.
Да, к сожалению у нас повсеместно так.
Потому, что Hadoop для High Availability Cluster а не для High Performance Cluster. И области применения разные и производительность разная.
ээ… разве? в любом случае у автора какая-то не очень параллельная система получается да ещё и на каких-то левых компонентах…
Начнём с того, что это не система. :-) Левые компоненты — может быть, однако, во многих настоящих системах, как коммерческих, так и нет, используется порой с половинку или больше левых компонентов или засабмиченных на самом деле неизвестно кем.
Почему не Hadoop/GridGain? С удовольствим бы почитал, если вы напишете про эти вещи, но у самого рук не хватает и памяти, чтобы всё охватывать.
Более того, hadoop вообще как числодробилка не очень. Он скорее для всякой аналитики для оочень больших объемов данных. На нем даже можно сделать некое подобие sql (см. проект cascading). И еще: все промежуточные результаты храняться в файлах, да еще и в распределенной ФС.
У меня вопрос, как человека, который пытался это счастье применить…
Скачав по той же ссылку, у меня были проблемы с отсутствием класса MpiException.
И при попытке скомпилить была естественно ошибка.
Вы его написали сами, или я дурак не смог найти этот класс? Потому, что в jar нике не было этого класс- это точно.

Кстати, я хоть и не был на школе MS в 2009 по HPC, но не в регалиях дело.
Вы бы сразу уточнили, что для работы на кластере эта штука именно, дали ссылочку на стандарт mpi (ну хоть в пару предложений сказали, что есть различные имплементации от ms, intel и тд. понятно что ms версия не для linux).
О том, что есть различные оболочки поверх mpi оригинального (c/fortran)на Java/.Net

Люди любят магические мантры типа параллельного программирования. Вы бы хоть чуток просветили тех, кто первый раз то…
А положил mpj.jar в /ext/lib? Он в основной библиотеке болтается.
Хорошо, спасибо за дельный совет. Следующий пост, надеюсь, будет уже поосознаннее.
Название поста не совсем верное. Скорее Message Passing Programming for Java. Параллельное программирование это типа fork-join. Конечно MPI это тоже параллельное программирование, но не детерминированное из-за т.н. concurrency.
В следующий раз буду дольше думать над названием поста. :-)
в даном примере может возникнуть ситуация когда вывод одного с потоков перемешается с другими, то есть мы будем видеть прерывание строки вывода одного потока и начало вывода другого. Или в Java такой вариант не пройдет?
Нет, у меня не проходил такой вариант.
это круто, мне понравилось, но мне непонятно, почему когда я запустил
mpjrun.bat -np 100 HelloWorld.java
то он сначала секунд 10-15 ждал, а потом сразу вывел сто строк
Only those users with full accounts are able to leave comments. Log in, please.