Перемещение параллельного кода Python в облако - PullRequest
4 голосов
/ 10 февраля 2011

Услышав, что научный вычислительный проект (случается, это метод стохастической трактографии , описанный здесь ), в настоящее время я работаю для исследователя, займет 4 месяца на нашем кластере из 50 узлов, исследователь спросил меня изучить другие варианты. В настоящее время в проекте используется параллельный python для отправки фрагментов массива 4d на разные узлы кластера и объединения обработанных фрагментов.

Задания, с которыми я сейчас работаю, вероятно, слишком грубые (от 5 секунд до 10 минут, мне пришлось увеличить время ожидания по умолчанию в параллельном Python), и я предполагаю, что смогу ускорить процесс в 2-4 раза переписав его, чтобы лучше использовать ресурсы (разделение и объединение данных занимает слишком много времени, что также должно быть распараллелено). Большая часть работы выполняется массивами numpy.

Давайте предположим, что 2-4 раза недостаточно, и я решил получить код нашего локального оборудования. Для таких высокопроизводительных вычислений, каковы мои коммерческие варианты и как мне нужно будет изменить код?

Ответы [ 2 ]

6 голосов
/ 10 февраля 2011

Вас может заинтересовать PiCloud . Я никогда не использовал его, но их предложение, по-видимому, включает Enthought Python Distribution , который охватывает стандартные научные библиотеки.

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

1 голос
/ 10 февраля 2011

Наиболее очевидные коммерческие варианты, которые приходят на ум, - это Amazon EC2 и Rackspace Cloud. Я поиграл с обоими и нашел, что Rackspace API немного проще в использовании.

Хорошей новостью является то, что вы можете создавать прототипы и играть с их вычислительными экземплярами (виртуальными машинами с коротким или долгим сроком службы в выбранной вами ОС) за очень небольшие инвестиции, как правило, 0,10 доллара США в час или около того. Вы создаете их по требованию, а затем по окончании отпускаете их обратно в облако и платите только за то, что используете. Например, я видел демонстрацию по развертыванию Django с использованием 6 экземпляров Rackspace, что заняло, возможно, час и стоило докладчикам меньше доллара.

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

Существуют API-интерфейсы Python для Rackspace Cloud и Amazon EC2. Что бы вы ни использовали, я рекомендую основанную на Python Fabric для автоматического развертывания и настройки ваших экземпляров.

...