JAVA , многоядерность и мультипроцессорность
Знания new Thread synchronized, volatile, wait, notify, notifyAll достаточно для решения большинства задач связанных с многопоточностью. В более сложных случаях могут пригодится классы из java.util.concurrent.*. С кластерами я пока не связывался - поэтому ничего кроме использования Socket'а для распараллеливания на несколько компьютеров не знаю.
Знания new Thread synchronized, volatile, wait, notify, notifyAll достаточно для решения большинства задач связанных с многопоточностью. В более сложных случаях могут пригодится классы из java.util.concurrent.*.Ну только я бы сказал, что сначала скорее пригодится concurrent api, и только потом уже в более сложных случаях wait/notify/notifyAll.
автор же ищет аналоги MPI
все что ты перечислил это аналоги pthreadне понятно, чего автор хочет, название топика путает
автор же ищет аналоги MPI
не понятно, чего автор хочет, название топика путаетпомойму все ок
мультипроцессорность - когда у тебя несколько процессоров
MPI позволяет потоки запускать на разных процессорах
подозреваю что в MPI есть всякие фичи для управления этим делом, например : гарантированный запуск второго потока на другом процессоре
в java Thread этого точно нельзя сделать, там второй поток запустится где повезет, может на другом процессоре а может и на этом же
но насколько я помню, MPI он несколько не для этого
он больше для кластеров, т.е. когда у каждого процессора еще и память своя
и там были всякие фичи типа пересылки данных с памяти одного проца в память другого
подозреваю что в MPI есть всякие фичи для управления этим делом, например : гарантированный запуск второго потока на другом процессореЯ всегда думал, что это ОС занимается выбором процессоров под потоки.
в java Thread этого точно нельзя сделать, там второй поток запустится где повезет, может на другом процессоре а может и на этом же
Смысла пользовать какую то реализацию MPI внутри одной ОСи как правило нету, ибо у этой ОСи есть своя нативная реализация взаимодействия процессов.
Смысла пользовать какую то реализацию MPI внутри одной ОСи как правило нетуЗачастую есть, например, если система с 2x4 ядра и какая-нибудь вычислительная задача, написанная под MPI
Переделывать прогу никто не будет, а считать быстрее хочется.
Upd
Опять же, про оси разных семейств, это утопия. Если прога не занимается кодированием/декодированием данных в нейтральный формат
Зачастую есть, например, если система с 2x4 ядра и какая-нибудь вычислительная задача, написанная под MPIЭто не смысл. Это ты вынужден так поступать.
Переделывать прогу никто не будет, а считать быстрее хочется.
Мы же говорим об осознанном выборе библиотеки взаимодействия процессов.
Опять же, про оси разных семейств, это утопия. Если прога не занимается кодированием/декодированием данных в нейтральный форматЭто не утопия, это просто никому не нужно, ибо бессмысленно.
Но потенциально - возможно. Это я и хотел подчеркнуть.
Мы же говорим о выборе библиотеки взаимодействия процессов.Тогда надо весьма четко оговаривать среду, в которой должна прога работать.
Ибо без этого выбор библиотеки бессмысленен
А про взаимодействие разных МПИев, у меня есть очень большие сомнения, что разные реализации совместимы.
Поскольку mpi накладывает ограничение лишь на API, а не на реализацию
Разные реализации одного мпия на разных системах могут работать только при соответствии размеров типов и порядка бит (LE, BE)
Более того, это очень тяжело реализовать из-за схемы, которая в МПИ используется для запуска, поскольку бинари будут разные.
Тогда надо весьма четко оговаривать среду, в которой должна прога работать.Бинго. Именно поэтому постановка задачи автором меня мягко говоря смущает.
Ибо без этого выбор библиотеки бессмысленен
А про взаимодействие разных МПИев, у меня есть очень большие сомнения, что разные реализации совместимы.Да, они как правило несовместимы. Разве я утверждал обратное?
Есть мнение, что жаве на всё это положить.Тогда надо весьма четко оговаривать среду, в которой должна прога работать.Бинго. Именно поэтому постановка задачи автором меня мягко говоря смущает.
Ибо без этого выбор библиотеки бессмысленен
Есть мнение, что жаве на всё это положить.
на что на все?
на джаве есть несколько реализаций mpi, старое и новое конкаррент апи, и еще туева хуча гораздо более специфичных либ-велосипедов
чтобы из всего этого выбрать что-то подходящее, надо понимать, то ли чуве хочет кластер веб-серверов, то ли хочет параллелить чмы какие-нить, то ли дистрибутед.нет свой написать
мультипроцессорность - когда у тебя несколько процессорову меня есть некоторые подозрения, что платформонезависимый язык не должен иметь механизмов привязывающихся к железу, максимум что-то можно сделать через обращения к виртуальной машине.
Я таких возможностей, во всяком случае, не видел
Вы тут спорили о разных платформах (железо/ОСь) и как будет это всё работать вместе. Так вот для жавы эти все вопросы не актуальные (если есть jvm для всех этих платформ).
Важнее другой твой вопрос:
и еще туева хуча гораздо более специфичных либ-велосипедовНо даже этот вопрос рано пока задавать - по первому посту понятно (по крайней мере мне что автор вообще ничего не знает о подобных реализация в жаве, поэтому спрашивает ключивые слова. Так что вы забегаете вперёд. А если знаешь эти реализации mpi - подскажи. А целесообразность будем обсуждать, когда автором будет выкурено хоть чуть-чуть доков. :-]
чтобы из всего этого выбрать что-то подходящее, надо понимать, то ли чуве хочет кластер веб-серверов, то ли хочет параллелить чмы какие-нить, то ли дистрибутед
Но даже этот вопрос рано пока задавать - по первому посту понятно (по крайней мере мне что автор вообще ничего не знает о подобных реализация в жаве, поэтому спрашивает ключивые слова. Так что вы забегаете вперёд.Я все это прекрасно понимаю. Вся дискуссия развилась уже не в ответ на непосредственно вопрос автора.
А если знаешь эти реализации mpi - подскажи.На вике все доходчиво расписано.
А целесообразность будем обсуждать, когда автором будет выкурено хоть чуть-чуть доков.Я уже, честно говоря, наобсуждался =)
у меня есть некоторые подозрения, что платформонезависимый язык не должен иметь механизмов привязывающихся к железу, максимум что-то можно сделать через обращения к виртуальной машине.К сожалению, дыры в абстракции есть. Например JNI.
Как ни странно, одна из самых популярных реализаций MPI для JAVA написана как JNI обертка к сами-угадайте-чему.
К сожалению, дыры в абстракции есть. Например JNI.ну извините, если использовать JNI, то это будет уже не совсем программа на жабе. да и вообще его использование считается плохой практикой, как и GOTO в паскакале\С
Как ни странно, одна из самых популярных реализаций MPI для JAVA написана как JNI обертка к сами-угадайте-чему.
а если обходиться, то библиотека будет медленной (если она хоть чуток требует ресурсов).
конечно, использовать JNI для чего ни попадя нехорошо, и лучше делать сперва обёртку, а потом использовать только неё, но технология эта необходима.
swt, tomcat - это первое что в голову пришло
В этих проектах jni пользуется весьма осознанно
В томкете правда небольшой необязательный кусочек, но тем не менее, рекомендуемый.
В mpijava оно там, конечно, я почти уверен, от желания сэкономить, не переписывая всю реализацию. Но как бы уж лучше такое, чем совсем никакое.
Оставить комментарий
356ft85
Подскажите, что известно по сабжу.Для си++ всё более чем понятно мне - это MPI , OpenMP.