Будем производить установку параллельной версии SIESTA-3.1-rc2 а также SIESTA-TRUNK-364, потому что не параллельную может установить каждый, да и это не интересно.
Прежде всего, перед установкой, надо убедиться, что стоят следующие пакеты:
Intel® Fortran Compiler 12.0
Intel® Math Kernel Library 10.3
Intel® Debugger
Эти пакеты находятся в Intel® Fortran Composer XE 2011 for Linux
Скачиваем его и устанавливаем, если есть трудности в установке, то можно воспользоваться пособием (http://conquer-ur-computer.blogspot.com/2010/12/install-intel-fortran-c-ifort-icc-in.html).
Далее, нужно установить
Intel® C++ Compiler 12.0
Intel® Integrated Performance Primitives
Intel® Parallel Building Blocks
Эти пакеты можно скачать отсюда Intel® C++ Composer XE 2011 for Linux
Устанавливаются также, как и Fortran.
Далее нужно отредактировать системный файл, для этого пишем
vi ~/.bashrc
и записываем в него строчку
export PATH=$PATH:/opt/intel/bin/
Первый этап закончен.
Далее, нам необходимо установить gfortran и Fortran 77. Сделать это нам поможет менеджер пакетов Synaptic. Необходимо найти и добавить следующие пакеты
- libmpich2-2
- libmpich2-dev
- mpich2
- mpich2-doc
- А также хорошо бы добавить еще
- debhelper (>= 7)
- cdbs
- gfortran
- txt2man
- libxt-dev
- x11proto-core-dev
- default-jdk
- quilt
- procps
- libhwloc-dev
- hwloc-nox
- libcr-dev
- Если все получилось установить, то тогда можно приступать и к установке самой программы SIESTA. Но, для начала перезагружаемся:)
- После перезагрузки распаковываем архив, далее по инструкции в /Obj/README
- После того, как мы получили arch.make в директории Obj, нужно его немного поправить, длят ого, чтобы прописать в нем правильные пути в нашим MKL библиотекам.
- Для начала нужно проверить, нашел ли он библиотеки mpi, смотрим, если есть строчка
- MPI_INTERFACE=libmpi_f90.a
- значит все в порядке, если нет, то надо разбираться индивидуально.
- Начинаем редактирование. Здесь я приведу свой собственный способ задания пути для MKL библиотек.
- Для начала комментируем или удаляем стандартные прописанные пути к библиотекам
- #BLAS_LIBS =
- #LAPACK_LIBS =
- #BLACS_LIBS =
- #SCALAPACK_LIBS =
- Кроме
- COMP_LIBS=
- и записываем:
- MKLROOT = /opt/intel/mkl
- STAT_LIBS = $(MKLROOT)/lib/ia32/libmkl_scalapack_core.a -Wl,--start-group $(MKLROOT)/lib/ia32/libmkl_intel.a $(MKLROOT)/lib/ia32/libmkl_sequential.a $(MKLROOT)/lib/ia32/libmkl_core.a $(MKLROOT)/lib/ia32/libmkl_blacs_intelmpi.a -Wl,--end-group -lpthread
- DYN_LIBS = -L$(MKLROOT)/lib/ia32 -lmkl_scalapack_core -Wl,--start-group -lmkl_intel -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi -Wl,--end-group -lpthread
- LIBS=$(STAT_LIBS) $(DYN_LIBS)
- Все, готово:) Библиотеки были скачаны и прописаны для архитектуры IA-32 и компилятора, соответственно, Intel Fortran.
- Чтобы правильно прописать пути к библиотекам, можно воспользоваться удобным сервисом Intel® Math Kernel Library Link Line Advisor.
- Теперь нужно скачать программу mpi-selector, для того, чтобы можно было переключать параллельные окружения. Установить его можно использую программу yum
- yum install mpi-selector
- или же скачать OFED пакет и установить оттуда (https://www.openfabrics.org/downloads/OFED/).
Далее необходимо произвести установку Intel® MPI Library. Пакет, по большому счет, платный, но для систем Linux можно скачать бесплатную 30-дневную версию и установить ее, все будет работать. Почему 30-дневная? Потому что ее нельзя будет установить после 30 дней с момента скачивания, а работать она будет сколь угодно долго.
Установив пакет можно проверить, установилось ли Intel MPI окружение. Проверяем через mpi-selector:
- Теперь можно делать make, и все будет работать:)
- Удачи!
Добрый день..
ОтветитьУдалить1) Для начала нужно проверить, нашел ли он библиотеки mpi, смотрим, если есть строчка
MPI_INTERFACE=libmpi_f90.a
строчки нет :(
2) Теперь нужно скачать программу mpi-selector, для того, чтобы можно было переключать параллельные окружения.
где ее найти?
3) или же скачать OFED пакет и установить оттуда (https://www.openfabrics.org/downloads/OFED/).
Какую именно версию скачать, попробовал версию 1.5.4 и 3.5 - там нет пакетов mpi- selector..
заранее спасибо..
Если строчки нет, значит не найдено параллельное окружение, а точнее библиотеки MPI
ОтветитьУдалитьПо поводу mpi-selector. Команда yum search mpi-selector не находит никаких пакетов?
Если не находит, то нужно качать OFED сборку. Я качал эту
http://www.openfabrics.org/downloads/OFED/ofed-1.4.2/OFED-1.4.2.tgz
По сути от того какая версия, для mpi-selector ничего не изменится. Значит скачали, распаковали и запустили
sudo ./install.pl
после этого нужно будет выбрать
2) Install OFED Software
и затем
4) Customize
Далее смотрите какие пакеты появляются на экране и жмете "n" для всех кроме mpi-selector. После этого он установится.
большое спасибо за ответ,
ОтветитьУдалить1) Если строчки нет, значит не найдено параллельное окружение, а точнее библиотеки MPI
как можно проверить- есть ли это окружение, кроме записи в arch.make
2) Команда yum search mpi-selector не находит никаких пакетов?
не находит..
может надо подключить репозитарий?
3) Install OFED Software
Получилось поставить с третьго раза, так и не понял, почему на третий раз..
Если у вас установлено OpenMPI или Intel MPI, значит у вас все должно быть, просто SIESTA хорошо ставится именно под IntelMPI.
ОтветитьУдалитьАга, если не получается, значит нужно репозиторий подключить
Главное что получилось установить:) Если дальше есть вопросы, то могу помочь
1) Если у вас установлено OpenMPI или Intel MPI, значит у вас все должно быть, просто SIESTA хорошо ставится именно под IntelMPI.
ОтветитьУдалитья поставил оба эти пакета, но в arch.make строчки нет, вручную вписывать эту строчку ведь нет смысла?? может нужно сначала настроить mpi-selector? моежт нет смысла ставить openmpi, если уж все равно скачал и установил intel-mpi? как проверить, что окружение установлено именно на intel?
2) Ага, если не получается, значит нужно репозиторий подключить
а какой именно репозитарий, их ведь великое множество, и как это сделать?
Строчку вписывать не надо самому, это верно. Да, нужно настроит mpi-selector на то, чтобы у Вас определилось именно intel mpi. Вот здесь http://alex-hpc.blogspot.ru/2012/08/mpi-selector.html у меня написано как устанавливать и настраивать mpi-selector для случай intel mpi.
ОтветитьУдалитьНа счет репозиториев, я сам этим делом занимался только один раз и давно, а потом не было надобности, можно посмотреть, например, вот здесь http://help.ubuntu.ru/wiki/%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9
большое спасибо за ответы,
ОтветитьУдалитьmpi-selector работает. команда
which mpirun
выдает правильные пути
но arch.make по прежнему без строчки
MPI_INTERFACE=libmpi_f90.a
что делать - куда копать дальше?
Да не за что:)
ОтветитьУдалитьИногда помогает просто удалить сиесту и разархивировать заново. Но в данном случае можно попробовать сделать конфиг таким образом
./configure --enable-mpi
и по идее должна прописаться эта строчка. Попробуйте, должно получиться
Попробовал,
ОтветитьУдалитьвыдает сообщение об ошибке:
Don't know how to compile MPI program
Значит нет компилятора, или не прописаны пути к нему.
ОтветитьУдалитьпопробуйте написать
which ifort
Если выдаст путь, значит надо попробовать для конфига указать компилятор вручную
./configure FC=ifort --enable-mpi
Если опять тоже самое повторится, то надо подумать будет. А Вы точно установили все пакеты?
libmpich2-2
libmpich2-dev
mpich2
mpich2-doc
debhelper (>= 7)
cdbs
gfortran
txt2man
libxt-dev
x11proto-core-dev
default-jdk
quilt
procps
libhwloc-dev
hwloc-nox
libcr-dev
which ifort
ОтветитьУдалитьпуть выдает
компилятор вручную указывал и даже указывал MPIFC=mpif90
пакете все установил
все равно та же ошибка..
может быть проблема в том что поставил всё 64 битные версии,
ОтветитьУдалитьТогда да, скорее всего из-за того, что версия 64 битная, нужно все удалить и переставить на 32 битную
ОтветитьУдалитьпереставить на 32 битную не помогло..
ОтветитьУдалитьвопрос: как с помощью mpi-selector переключить окружение не openmpi, в случае intel понятно где брать mpivars.sh, а в случае openmpi что подключать?
В таком случае нужно в директории/var/mpi-selector/data создать файл типа openmpi.sh где прописать пути к месту где установлен openmpi, по аналогии с файлами для Intelmpi. Например, написать вот такое
ОтветитьУдалить# PATH
if test -z "`echo $PATH | grep /share/openmpi/bin`"; then
PATH=/share/openmpi/bin:${PATH}
export PATH
fi
# LD_LIBRARY_PATH
if test -z "`echo $LD_LIBRARY_PATH | grep /share/openmpi/lib`"; then
LD_LIBRARY_PATH=/share/openmpi/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
fi
# MANPATH
if test -z "`echo $MANPATH | grep /share/openmpi/bin/share/man`"; then
MANPATH=/share/openmpi/bin/share/man:${MANPATH}
export MANPATH
fi
Добрый вечер,
ОтветитьУдалитьотчаившись поставить на ubuntu, попробовал поставить сиесту на centos 6.2 В итоге все работает, но пришлось самому компилировать scalapack. Так и должно быть или я что то упустил?
Ну если все заработало, то значит нормально, но все же предпочтительнее использовать Intel-овские библиотеки. Основной вопрос здесь стоит в их линковке. Для того, чтобы их правильно прилинковать, лучше пользоваться http://software.intel.com/sites/products/mkl/
ОтветитьУдалитьУказать свои параметры и получить правильные строчки для динамических и статических библиотек. В моем случае для CentOS строки для линковки библиотек выглядят вот так
MKLROOT=/share/intel/mkl/lib/intel64
STAT_LIBS = $(MKLROOT)/libmkl_scalapack_lp64.a -Wl,--start-group $(MKLROOT)/libmkl_intel_lp64.a $(MKLROOT)/libmkl_sequential.a $(MKLROOT)/libmkl_core.a $(MKLROOT)/libmkl_blacs_intelmpi_lp64.a -Wl,--end-group -lpthread
DYN_LIBS = -L$(MKLROOT)/ -lmkl_scalapack_lp64 -Wl,--start-group -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_lp64 -Wl,--end-group -lpthread
LIBS=$(STAT_LIBS) $(DYN_LIBS)