Настольное программное обеспечение с ресурсами HPC для обработки внутренних номеров

17

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

У нас была одна идея - позволить пользователям разгружать модели, которые, как мы знаем, будут работать очень долго (в то время как каждое отдельное моделирование длится около 30-120 секунд, выполнение большого количества симуляций может занять несколько дней). Кто-нибудь делал это раньше? Если да, то использовали ли вы какие-либо библиотеки для облегчения работы? Стоило ли это усилий?

отредактировано, чтобы добавить:

Отдельные задачи для разгрузки симуляции будут

  • упаковка файла (около 5 Мб),
  • загрузить его на наши серверы,
  • Разложение пакета на отдельные симуляции (каждая занимает около 30-120 секунд и полностью распараллеливаемая), количество симуляций является функцией количества опций, выбранных пользователем (изоляция, ориентация здания и т. д.) и наихудшего случая выбора каждый возможный вариант приведет к моделированию 1E50. Запуск от 100 до ~ 1E5 симуляций не неизвестен, но большинство пользователей будут работать менее 10.
  • повторная сборка завершенных симуляций и загрузка теперь гораздо большего файла.

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

Это приложение уже использует .NET 4 и может расширяться для использования всех ядер, которые есть у пользователя (наши машины для разработки имеют 8 ядер).

Tangurena
источник
Я не совсем понимаю, для чего именно вы собираетесь здесь - всегда ли конец HPC будет на ваших серверах или других выделенных серверах? (Если это так, это должно сделать это намного проще, потому что вы можете сделать намного больше на стороне сервера.)
Aesin
@ Aesin, конец HPC будет на наших серверах, да. Существующее приложение и новая версия запускают симуляции на рабочем столе пользователя. Я ищу советы / рекомендации о том, как подумать о следующей версии, чтобы иметь возможность использовать HPC для крупных пользователей.
Tangurena

Ответы:

10

Вы можете рассмотреть возможность использования Condor: http://research.cs.wisc.edu/condor/ . Это может быть излишним, в зависимости от того, о каких ресурсах HPC вы говорите и насколько они изменятся. Однако его довольно легко начать, и он заботится о запуске независимых заданий, отказоустойчивости, балансировке нагрузки и т. Д.

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

Matt

Мэтт Кнепли
источник
Я не уверен, что condor будет работать с .net (Windows?), Но наша рабочая группа использует condor в Linux, и я могу рекомендовать его для отправки работ +1
Себастьян
Кондор может общаться через файловую систему, поэтому он не должен следовать .NET. Это работает на Windows.
Мэтт Кнеплей
5

Если вы находитесь в мире .NET, вы смотрели на поддержку многопоточности в .NET 4; и асинхронные функции, которые добавляются в .NET 4.5?

Многопоточность не помогает перенести обработку на другие машины, но позволяет лучше использовать многоядерные ПК, которые мы все используем в наши дни. 4.0 имеет некоторые хорошие особенности в этом отношении.

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

winwaed
источник
4

Ответ зависит от того, что у вас есть в качестве бэкэнда HPC. Вопрос касается существующих ресурсов, доступных пользователям NREL. Существуют кластеры Linux и кластер Windows на базе Windows Compute Cluster Server.

  1. Чтобы использовать кластер linux, автор должен убедиться, что процедура моделирования работает на Mono (реализация платформы .NET для linux) и убедиться, что Mono установлен на узлах.

  2. Следующий вопрос заключается в том, могут ли пользователи иметь учетные записи в вычислительных кластерах и могут ли они получать данные на узлы. Простейший случай - одна файловая система, доступная с локальных компьютеров и с узлов.

    Я не уверен, что такая файловая система доступна для пользователей NREL, поэтому потребуется некоторое копирование. Это уже усложняет ситуацию.

  3. Затем приложение должно иметь возможность скомпилировать сценарий описания задания, отправить его в соответствующий кластер и запросить в системе очередей состояние моделирования до тех пор, пока задание не выйдет из очереди.

  4. Наконец приложение должно быть в состоянии получить результаты.

Все это выполнимо, хотя и не тривиально и будет весьма специфичным для настройки этой конкретной лаборатории.

Коммерческие приложения от Ansys или MSC позволяют пользователю сохранить описание задания моделирования, которое впоследствии можно будет запустить в пакетном режиме на удаленном кластере.

Более общими решениями будет использование грид-инфраструктуры, если таковая имеется.

Затем можно было бы перейти к сервис-ориентированной архитектуре, где веб-сервис настроен где-то для ожидания запросов на симуляцию и отправки их в кластер, таким образом отделяя приложение от знания специфики доступных ресурсов.

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

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

Дмитрий Чубаров
источник