Как успешно скомпилировать mpi4py с помощью MS HPC Server Стек MPI 2008 R2?

Итак, история гласит: мне нужна оболочка MPI для Python.

Я знаю, что есть mpi4py . Для текущей работы я (в основном) использую Python и Windows, я бы хотел использовать Microsoft HPC Cluster Pack, имея доступ к нескольким довольно «сильным» машинам, работающим под Win 2008 Server. Просто упомяну, помимо Win-опыта, у меня есть небольшой опыт работы с * nix с MPI и прочим, но это довольно спорный вопрос для этой проблемы.

Мой интерес к mpi4py возобновился, когда я столкнулся с Python Tools для Visual Studio . Это действительно здорово. Любой поклонник Visual Studio и Python должен попробовать это. Хорошая работа и отличный отладчик.

На страницах документации PTVS говорится, что установка mpi4py проста ... и для ActiveState Python это кажется правдой. Однако, если вы не используете Python ActiveState, а вместо этого используете «нормальный» дистрибутив Python с python.org, вам, похоже, немного не повезло.

Моя машина для разработки - это ноутбук с 64-битной Win7 и Python 2.6, как в 64-битном, так и в 32-битном вариантах. Я установил MS HPC Pack 2008 R2 MS MPI и SDK. У меня Visual Studio 2008 и 2010, все исправлено.

Нет бинарного установщика, и зная, как Unix MPI могут быть чрезвычайно разборчивыми по отношению к версии MPI, с которой они связаны, я хотел создать свой собственный mpi4py. mpi4py в основном полагается на наличие MPI .dll (на самом деле .pyd), которая связывает вызовы python с библиотеками MPI.

easy_installing mpi4py и построение этой библиотеки не удалось - не удалось указать на библиотеки MPI. Хорошо, без проблем, я загрузил архив mpi4py, извлек его и изменил файл mpi.cfg так, чтобы он указывал на правильные папки:

# Microsoft MPI example
# ---------------------
[msmpi]
define_macros = MS_MPI=1
mpi_dir = $CCP_HOME
include_dirs = %(mpi_dir)s\Inc
libraries = msmpi
library_dirs = %(mpi_dir)s\lib\i386

Установщик MS MPI регистрирует переменную среды CCP_HOME, указывающую на точное место установки пакета. Название «CCP» должно остаться со времен, когда он назывался Microsoft Compute Cluster Pack). Надо передать это исходному разработчику mpi4py.

После этого компиляция проходит нормально, но я не могу связать -есть три нерешенных внешних фактора:

MPI.obj : error LNK2019: unresolved external symbol _MPI_Type_create_f90_integer@8 referenced in ...
MPI.obj : error LNK2019: unresolved external symbol _MPI_Type_create_f90_real@12 ...
MPI.obj : error LNK2019: unresolved external symbol _MPI_Type_create_f90_complex@12 ...

Похоже, что MS MPI msmpi.lib из HPC 2008 R2 не реализует их, поэтому я не могу создать MPI.pyd.

Я мог бы попытаться закомментировать их в mpi4py Исходный файл C, но я не думаю, что это правильный путь.

Заранее спасибо!

5
задан Hrvoje Keko 22 August 2011 в 18:18
поделиться