Я ищу библиотеку python, которая расширяет функциональность numpy до операций в кластере распределенной памяти: то есть «модель параллельного программирования, в которой программист рассматривает массив как единый глобальный массив, а не как несколько независимых массивов, расположенных на разных процессорах». "
Для Matlab Лаборатория Линкольна Массачусетского технологического института создала pMatlab, который позволяет выполнять матричную алгебру на кластере, не слишком заботясь о деталях аспекта параллельного программирования. (Происхождение цитаты выше.)
Для дискового хранилища существуют pyTables для python. Хотя он оптимизирует не то, как вычисления распределяются в кластере, а скорее то, как вычисления «распределяются» по отношению к большим данным на диске. - Что довольно похоже, но все же не хватает важного аспекта.
Цель состоит не в том, чтобы выжать из кластера последнюю часть производительности, а в том, чтобы выполнять научные вычисления (полуинтерактивно), которые слишком велики для отдельных машин.
Есть ли что-то подобное для питона? Мой список желаний был бы таким:
- активно поддерживается
- замените numpy
- альтернативно использование аналогично numexpr
- высокая абстракция части параллельного программирования: то есть пользователю не нужно явно использовать MPI
- поддержка локальности данных в кластерах распределенной памяти
- поддержка многоядерных машин в кластере
Это, наверное, немного похоже на веру в зубную фею, но никто не знает ...
Я нашел пока:
Там (существует / использовался) интерфейс Python для Global Array от Тихоокеанской северо-западной национальной лаборатории. См. Ссылки под темой «Высокопроизводительные параллельные вычисления в Python с использованием NumPy и Global Arrays Toolkit». (Особенно "GA_SciPy2011_Tutorial.pdf".) Однако это, похоже, снова исчезло.
DistNumPy: более подробно описано в этот документ. Однако похоже, что проекты были заброшены.
Если вам известен какой-либо пакет или вы использовали любой из двух вышеперечисленных, опишите свой опыт работы с ними.