Перенос кода Parallel Python в облако

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

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

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


person Thomas    schedule 10.02.2011    source источник
comment
Или, косвенно, кто уже записал эту информацию и как я могу ее получить.   -  person Thomas    schedule 10.02.2011


Ответы (2)


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

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

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

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

person JohnJ    schedule 10.02.2011
comment
Под высокой пропускной способностью я подразумеваю определение, которое я видел здесь однажды — cs.wisc.edu/condor/ htc.html Мне не нужна низкая задержка, и мне все равно, когда это будет сделано, главное, чтобы это было в этом, а не в следующем месяце. - person Thomas; 10.02.2011
comment
Хорошо, понял - не был уверен, нужна ли вам большая пропускная способность, и в этом случае это повлияет на ваш бюджет/планирование. Другой потенциальной проблемой является максимальное количество экземпляров, которое вы можете зарезервировать, которое время от времени меняется... вам следует проверить часто задаваемые вопросы поставщика. - person JohnJ; 11.02.2011
comment
Спотовые экземпляры Amazon выглядят довольно аккуратно, может быть, примерно так, как я и искал, но мне придется написать оппортунистический код. - person Thomas; 11.02.2011

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

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

person nikow    schedule 10.02.2011