Большие требования к оперативной памяти и кластеры / облака - PullRequest
1 голос
/ 25 августа 2011

Это действительно вопрос биоинформатики, но я сделаю его настолько общим, насколько смогу.Вот полу гипотетическая ситуация:

Допустим, у меня есть доступ к кластеру или даже облаку.Я хочу запустить несколько очень специфических программ в этом кластере / облаке (точнее, геномных / транскриптомных ассемблерных программ).Проблема в том, что я ожидаю, что этим программам (Velvet / Oases, Trinity и т. Д.) Потребуется большой объем оперативной памяти, консервативно более 100 ГБ, а самый большой узел в моем кластере / облаке - всего 32 ГБ.

Теперь, кроме переключениядля программы на основе MPI / Hadoop (ABySS или еще чего-нибудь), написание собственного или покупка нового компьютера, каковы мои жизнеспособные варианты?Кто-нибудь пробовал использовать распределенную операционную систему (MOSIX, Kerrighed, ...) с разделяемой памятью на нескольких узлах кластера / облака?Как насчет виртуального SMP?Что еще?

Спасибо за любую помощь!

Правка для уточнения: Скажем также, что для программ, упомянутых выше (Velvet / Oases и Trinity), требуется одна система с большим пулом оперативной памяти.В ореховой оболочке я ищу эффективный способ «вставить» кучу узлов вместе в один виртуальный суперузел, где один процесс мог бы получить доступ ко всей оперативной памяти со всех узлов, как если бы это была одна система.Я знаю, что что-то подобное могло бы дать существенный удар по производительности, но я ищу что-то, что возможно, не обязательно эффективно.

ps Извините, если моя терминология сбивает с толку.Я немного новичок в этом.

Ответы [ 3 ]

2 голосов
/ 25 августа 2011

Это полностью зависит от характера вашего приложения. Переключение на Hadoop, MPI, MOSIX или VSMP может не решить вашу проблему, потому что эти технологии полезны, когда вы можете разделить свое приложение на параллельные исполняемые блоки.

Теперь, если ваше приложение разбивается на параллельные блоки, выберите лучшую программную технологию, которая соответствует вашим потребностям. В противном случае рекомендуется обновить ваше оборудование. Для выбора технологии программного обеспечения, если ваше приложение:

  1. Требуется много данных: попробуйте Hadoop, Dryad или что-то в этом роде.
  2. Процесс интенсивен и передает много сообщений между его блоками: попробуйте MPI
  3. Содержит много легких потоков: используйте GPGPU для своего приложения.
  4. ....

Взгляните на проект RAMCloud в Стэнфордском университете. Это как-то актуально.

1 голос
/ 26 сентября 2011

В вашем вопросе не указывается характер обработки. Это особенно важно. Например, является ли каждый объект действительно 100 ГБ или 100 ГБ - это набор из множества объектов гораздо меньшего размера?

Тем не менее, отвечая на общий вопрос, я обычно работаю с наборами данных объемом более 100 ГБ в файлах с отображением в памяти. Если вы научитесь делать отображение памяти, вы, вероятно, найдете это очень простым путем. Более того, если данные находятся в одном месте, то легко использовать NFS, и тогда несколько систем могут одновременно обращаться к одним и тем же данным. В любом случае отображение памяти часто очень легко внедрить в существующие программы, особенно по сравнению с управлением перемещением блоков данных по вашей сетке.

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

0 голосов
/ 03 апреля 2014

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

...