Параллельное программирование глобального массива на кластерах распределенной памяти с помощью Python

Я ищу библиотеку python, которая расширяет функциональность numpy до операций в кластере распределенной памяти: то есть «модель параллельного программирования, в которой программист рассматривает массив как единый глобальный массив, а не как несколько независимых массивов, расположенных на разных процессорах». "

Для Matlab Лаборатория Линкольна Массачусетского технологического института создала pMatlab, который позволяет выполнять матричную алгебру на кластере, не слишком заботясь о деталях аспекта параллельного программирования. (Происхождение цитаты выше.)

Для дискового хранилища существуют pyTables для python. Хотя он оптимизирует не то, как вычисления распределяются в кластере, а скорее то, как вычисления «распределяются» по отношению к большим данным на диске. - Что довольно похоже, но все же не хватает важного аспекта.

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

Есть ли что-то подобное для питона? Мой список желаний был бы таким:

  • активно поддерживается
  • замените numpy
  • альтернативно использование аналогично numexpr
  • высокая абстракция части параллельного программирования: то есть пользователю не нужно явно использовать MPI
  • поддержка локальности данных в кластерах распределенной памяти
  • поддержка многоядерных машин в кластере

Это, наверное, немного похоже на веру в зубную фею, но никто не знает ...

Я нашел пока:

  1. Там (существует / использовался) интерфейс Python для Global Array от Тихоокеанской северо-западной национальной лаборатории. См. Ссылки под темой «Высокопроизводительные параллельные вычисления в Python с использованием NumPy и Global Arrays Toolkit». (Особенно "GA_SciPy2011_Tutorial.pdf".) Однако это, похоже, снова исчезло.

  2. DistNumPy: более подробно описано в этот документ. Однако похоже, что проекты были заброшены.

Если вам известен какой-либо пакет или вы использовали любой из двух вышеперечисленных, опишите свой опыт работы с ними.


person ARF    schedule 28.01.2013    source источник


Ответы (1)


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

Blaze - это выразительный компактный набор базовых абстракций для составления вычислений над большими объемами полуструктурированных данных произвольных форматов и распределенных по произвольным сетям.

person bogatron    schedule 28.01.2013
comment
Вы знаете, реализована ли какая-либо сетевая часть? Все примеры, кажется, охватывают операции с дисками. - person ARF; 29.01.2013
comment
Извините, у меня нет подробностей о статусе реализации сети. - person bogatron; 30.01.2013