LINUX.ORG.RU

параллельные и распределённые вычисления: нужны советы по выбору инструментов

 , , ,


0

3

Доброго времени суток,

я тут начинаю новый проект и нахожусь на первоначальной стадии выбора инструментов для научно-исследовательских вычислений в своей области. Т.е. несмотря на то, что шефы советуют пользоваться мак-компьютерами, взял старенький компьютер, поставил туда Линукс и спокойно работаю на этом резвом товарище, т.к. основые расчеты всё равно будут проводиться на суперкомпьютерах, кластерах и в сети EGEE (возможно, но не уверен). А там всё равно линкус стоит.

Шефы изначально не хотят чтобы все расчёты были завязанны на коммерческие продукты вроде Matlab, поэтому буду идти в сторону использования бесплатных языков программирования и скриптов. Что само по себе мне нравится.

Следующий момент - в расчётах точно нужно будет вести параллельные расчеты (на нескольких ядрах, процессорах или компьютерах одновременно). Возможно нужно будет организовать обмен данными между этими ядрами, процессорами и хостами, но я бы хотел избежать это по возможности. Важно чтобы быстро можно было посчитать и не важна возможность вывода данных в графическом виде. Всё равно для подготовки графиков я буду использовать что-то другое.

Пока читаю и смотрю в сторону использования MPI, openMP, openMPI, Erlang (слышал, но ещё не добрался до него).

Можете посоветовать еще варианты и в какую сторону посмотреть? Какие могут быть подводные камни? Что почитать? До библиотеки по этой теме не добрался еще, т.к. читаю пока другое. Так что если посоветуете что почитать, то это будет как раз вовремя.

спасибо :)

забавные какие шефы, " советуют пользоваться мак-компьютерами", при этом «не хотят чтобы все расчёты были завязанны на коммерческие продукты вроде Matlab»; задачу выдают очевидному нубу (по крайней мере в этой области) и тщательно прячут прочих разработчиков.

советую единственно разумный вариант - подойти к «шефам» и спросить про рекомендуемый(принятый в вашем муравейнике/отрасли/заказчике) инструментарий. Грозить что иначе реализуешь всё на Хаскеле.

А пока до шефов доходит смысл, «читать пока другое» и пробовать его в matlab`е и прочих октавах.

MKuznetsov ★★★★★
()

MKuznetsov, инструментарий выбирать буду я, потому и задаю вопросы, на которые я бы хотел получить ответы (а не обсуждение моих шефов или меня).

pivanov
() автор топика

забыл ответить насчёт октавы - да, как вариант вполне рассматриваю (и пользовался когда матлаба под рукой не было), но это опять же оставаться в отношениях с матлабом. Это всё на крайний случай, конечно, приберегаю, но смотрю в сторону нового.

pivanov
() автор топика

Просить совета на стадии, когда не понимаешь область, где будешь работать - это пять. Не можешь связно описать, почему там нужны кластеры, параллельные расчеты, и в то же время «буду смотреть Octave», лол! Вот и получишь ответы от numpy до haskell. Первый комментарий был правильный - спроси шефов, если не знаешь, или пиши на том, что знаешь.

iVS ★★★★★
()

Если на суперкомпьютерных кластерах, Erlang можно сразу списать.

Возможно нужно будет организовать обмен данными между этими ядрами, процессорами и хостами, но я бы хотел избежать это по возможности.

Избежать? На кластере? Интересно, каким образом.

tailgunner ★★★★★
()

Go. Потом нам расскажете.

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

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

Мне действительно нужны ответы «numpy до haskell», я потому так вопрос в общем и ставил. Когда у меня будет список вот таких ключевых слов, то потом я уже буду разбираться и отбирать нужное мне.

Писать «зачем нужны кластеры» я не стал опять же потому что 1. вопрос общий и интересует ответ в общем; 2. приоритеты, цели и соответственно интрументы их достижения будут и могут меняться.

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

избежать настолько, насколько это можно будет (например просто выполнять на ядрах, хостах и т.п. программы, которым не нужно взаимодействовать друг с другом). Если не получится, то буду искать что-то лучшее. Вот потому и нужна такая общая информация, чтобы знать что доступно и из чего можно выбирать.

а чем Erlang может быть не удобен для суперкомпьютеров?

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

s9gf4ult, qq6ka, спасибо, буду потихоньку с ними разбераться.

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

избежать настолько, насколько это можно будет

Мде. Избежать этого невозможно от слова «совсем».

Вот потому и нужна такая общая информация

Узнай сначала, что будет на целевых «суперкомпьютерах». Если это действительно суперкомпьютеры, то MPI там будет точно, с нее и начни.

а чем Erlang может быть не удобен для суперкомпьютеров?

Тем, что его не будет; тем, что если ты его поставишь сам (но тебе не позволят), собственно числодробилку всё равно придется писать на Си/Фортране.

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

Мде. Избежать этого невозможно от слова «совсем».

да вроде иногда на некоторых задачах удавалось, начинал еще с кластеров Condor (которые расчетов с обменом информации между нодами не поддерживали) и тот же Матлаб сначала делил свои задачи на параллельные и распределённые (первый релиз Matlab Distributed Computing Toolbox). Вот один из этих типов (не вспомню сейчас то ли паралельные, то ли распределённые, т.к. постоянно их путаю) и предусматривал то, что процессы выполняемые на разных нодах не взаимодействуют друг с другом. Потом они перестали их вообще делить на эти два типа. Потом уже сталкивался с более сложными задачами. Вот там у меня точно было не избежать совсем.

Узнай сначала, что будет на целевых «суперкомпьютерах». Если это действительно суперкомпьютеры, то MPI там будет точно, с нее и начни.

Да, MPI есть. Так что действительно с этого буду начинать.

Тем, что его не будет; тем, что если ты его поставишь сам (но тебе не позволят), собственно числодробилку всё равно придется писать на Си/Фортране.

К этому я вполне готов и могу попробовать потянуть. Мне всегда везло с админами, они меня поддерживали. Так что может быть и поставят. Но я у себя на компе тогда поставлю и погоняю сначала :)

спасибо :)

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

Тем, что его не будет; тем, что если ты его поставишь сам (но тебе не позволят), собственно числодробилку всё равно придется писать на Си/Фортране.

Ноды или NIF на си все равно удобнее, чем просто си.

А вообще, для суперкластера MPI+CUDA/OpenCL.

unfo ★★★★★
()
Последнее исправление: unfo (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Мде. Избежать этого невозможно от слова «совсем».

а, понял почему «совсем». я же сам написал «расчётах точно нужно будет вести параллельные расчеты». Да, если будет точно, то не избежать.

«точно», это было слишком сильным словом. На самом деле позже будет видно точно или может быть.

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

а что такое ноды и NIF на си?

а то я привык к тому что нодами называют компьютеры в кластере и отдельные участки распределения электрического поля, и потому путаюсь :)

pivanov
() автор топика

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

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

да, кстати. так же много читал о такой связке, так что буду копать глубже.

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

а что такое ноды и NIF на си?

Терминология эрланга. Но ноды все также яляются компьютерами в кластере :)

NIF — Native Implemented Function — функция, которая вызывается из эрланга, но реализована она, например, на C/C++/Fortran.

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

избежать настолько, насколько это можно будет

Мде. Избежать этого невозможно от слова «совсем».

Ну почему же? Есть задачи перебора параметров — параллелится легко, обмена информацией нет (не нужен) ... Только язык не поворачивается называть это «распределенными вычислениями» ;)

abalakin ★★
()

Во-первых, что за область, что за расчеты? Во-вторых,

будут проводиться на суперкомпьютерах, кластерах и в сети EGEE

это расплывчато. Считать на гридах будешь? А какие технологии эти гриды поддерживают? А то напишешь на MPICH каком-нибудь, а его там и не окажется.

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

Во-первых, что за область, что за расчеты? Во-вторых,

Решение уравнений Максвелла в трёх пространственных координатах для больших структур. Это уже может делать Meep методом конечных разностей, в нём же уже вполне неплохо реализована поддержка MPI. Вот чтобы не писать такой Meep для себя, я хочу взять уже существующий Meep и надстраивать его под задачи проекта. Это пока план на этом этапе, потом может меняться. Потому у меня в списке первыми идут MPI (он еще и проще оказался для понимания), openMPI. Одновременно пытаюсь посмотреть и разобраться что еще есть интересное и полезное что можно было бы использовать.

это расплывчато. Считать на гридах будешь? А какие технологии эти гриды поддерживают? А то напишешь на MPICH каком-нибудь, а его там и не окажется.

да, EGEE - это гриды. Но они будут запасным и крайним вариантом, если уж легко доступные мне кластеры/суперкомпьютеры по какой-то причине не подойдут. Просто доступ к EGEE получить сложней к тому, что уже есть (кластеры/суперкомпьютеры).

Насчет того что MPICH может не быть в гриде - это хороший момент. Спасибо, вот это мне нужно будет проверять.

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

у меня опечатка (слово потеряно), а исправить не могу.

«получить сложней к тому, что уже есть (кластеры/суперкомпьютеры)» -> получить сложней чем к тому, что уже есть (кластеры/суперкомпьютеры)

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

кластеры/суперкомпьютеры

Опять эти кластеры/суперкомпьютеры... Что EGEE — это грид, это я и сам знаю, мне хочется понять что это за кластеры/суперкомпьютеры, на каких технологиях они работают?

Касательно распараллеливания: если удастся распараллелить по данным, то именно так и надо делать. Запустишь 9000 независимых задач, а потом тупо объеденишь результат. Но вот только если это решение диффуров на больших объемах, боюсь так просто все не выйдет, и придется тебе с MPI развлекаться.

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

мне хочется понять что это за кластеры/суперкомпьютеры, на каких технологиях они работают?

вот если бы я знал что имеется ввиду под технологиями... При чем и кластеров несколько. Есть кластер, которым скорее всего буду пользоваться, но в нём мало нодов и он медленный.

В нем - почти обычные ноды с поддержкой MPI, openMP, есть и несколько нодов с Nvidia Tesla. Все они соеденены через Infiniband.

Если мне не будет хватать, то буду пользоваться другими. У тех других кластеров, которые так же могу использовать, только число нодов (включая ноды с Nvidia Tesla) больше.

На всех них стоят MPI, openMP, компиляторы PGI, Intell, GCC, библиотеки NAG и CUDA. На всех так же стоит тот же Matlab, но он не везде настроен на использование нескольких нодов кластера. Кое-где есть SciLab, Parallel Python, GNU Scientific Library (последние два скорее всего есть везде, но их просто нет в списках установленного софта).

В случае с софтом - его всегда можно доставить и админы часто поддерживают такое если могут. Так что список доступного софта (но не всегда железа) может быть расширен.

Касательно распараллеливания: если удастся распараллелить по данным, то именно так и надо делать. Запустишь 9000 независимых задач, а потом тупо объеденишь результат. Но вот только если это решение диффуров на больших объемах, боюсь так просто все не выйдет, и придется тебе с MPI развлекаться.

да, так и делаю, такой же план на будующее.

pivanov
() автор топика

обмен данными между этими ядрами, процессорами и хостами

erlang подойдет

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

Решение уравнений Максвелла в трёх пространственных координатах для больших структур

Тогда Вам сюда http://cfmaxwell.com/j/ru/ - на сегодня этот код объективно самый быстрый в мире. Отрыв от того же Meep в разы и больше. Написано на связке C++ - Python. Интерфейс на питоне (и по идее должно хватить его знаний на базовом уровне), код распространяется свободно. Если что - пишите разработчику.

Велосипедить самому с open-MP, MPI и пр. не советую - традиционные решения на их основе все равно сольют LRnLA алгоритмам на этих задачах в чистую. А самому реализовывать LRnLA алгоритмы, это много времени (неск лет) уйдет... тем более что тут уже есть готовый код.

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

спасибо :)

спасибо всем, мне всех советов будет достаточно. Если что, то топик можно закрывать, а я пошел «копать» дальше.

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

Вот еще для размышления:

www.linux.org.ru/wiki/en/User:AIv/LRnLA --- научно-популярный текст про LRnLA алгоритмы.

http://a-iv.ru/lev/disser.pdf - кандидатская диссертация автора кода CFMaxwell (осторожно, 100Мб). Там в частности очень подробно расписаны гран. условия PML, они Вам точно понадобятся;-)

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

http://a-iv.ru/lev/disser.pdf - кандидатская диссертация автора кода CFMaxwell

За написание программы уже кандидата физ-мат наук дают? Да у вас шарашкина контора!

iVS ★★★★★
()
Последнее исправление: iVS (всего исправлений: 1)
Ответ на: комментарий от iVS

«Иногда лучше жевать, чем говорить»(ц)

Во первых ЕМНИП там предметом защиты была не программа, точнее далеко не только программа. Во вторых, если Вы не в состоянии понять что это за программа, и насколько это радикальный прорыв в моделировании у-й Маквелла (если Вы конечно вообще знаете что это за у-я и зачем их надо моделировать), то лучше таки жуйте, а не демонстрируйте публично свою ограниченность на пару с анонимусом.

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

За написание программы уже кандидата физ-мат наук дают? Да у вас шарашкина контора!

Шерлок, ви таки удивитесь шо некоторым дают нобеля за какие-то сганые пгограмки. Вот тому поцу шо по центру за программы и дали ви пгедставляете? http://www.nobelprize.org/nobel_prizes/chemistry/laureates/2013/

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

LRnLA алгоритмы... По сути очередная высосанная из пальца диссертация

А в чем суть, док?

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

Многопоточный лок-фри libastral.so с прагмами и сообщениями, че ты как маленький!

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

насколько это радикальный прорыв в моделировании у-й Маквелла

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

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

Еще один любитель писькометрии. Т.е. прочитать диссер самому и понять о чем там речь мосга не хватает, мосга хватает только по импакт фактору судить?

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

Еще один любитель писькометрии. Т.е. прочитать диссер самому и понять о чем там речь мосга не хватает, мосга хватает только по импакт фактору судить?

Радость моя, ты где живешь? Нет статей в журнале с высоким импактфактором - гуляй лесом, никто твой диссер читать не будет. Даже нобелевские лауреаты не ленятся, а пишут, пишут, отсылают в Science и Nature. Вот же дураки, да? Действительно, куда им до вас. Видимо, разговор окончен.

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

Я не твоя радость. Какой импакт фактор был у Перельмана до того как его призанали? А какой у него индекс Хирша сейчас? Если ты способен оценить результат только по публикационной активности автора, то с тобой и правда говорить не о чем, ты такой же чучоный как и те что в госдуре/минобре сидят.

Список литературы хоть посмотри, погугли... все доступно.

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

Какой импакт фактор был у Перельмана до того как его призанали? А какой у него индекс Хирша сейчас?

Извини, не по адресу попал. Тут же все себя считают Перельманами, не меньше. Передавай привет Наполеону.

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

Т.е. даже на такой простой вопрос ты ответить не в состоянии?

И много же у тебы статей в Сайнс и Найчер? Поделись ка, открой личико?

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

Ок, давай тогда подведем итоги. Ты не имеешь к науке никакого отношения. Ты не можешь показать обсчетсву ни одной своей статьи. Зато ты слышал где то, что риальные ученые публикуются в сцайнс и найчер. Ты понятия не имеешь как работает современная наука, у тебя к ней отношение как к футболу - типа в футболе есть статистика, число мячиков забитых-отбитых, число пасов, это просто и понятно. И в науке ты думаешь так же, есть неск. чиселок, характеризующих ученого.

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

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