ClusterSetup

Материал из theor
Перейти к: навигация, поиск

Intel Fortran

Обновим пакеты и поставим необходимые для Intel Composer зависимости:

apt-get update
apt-get install -y g++
apt-get install -y openjdk-6-jre-headless

Качаем с сайта Intel Fortran Composer При установке на свежую версию ubuntu инсталлятор может ругаться на неподдреживаемую версию ОС. Для исправления меняем в файле /etc/lsb-release

 DISTRIB_RELEASE=11.10

на

 DISTRIB_RELEASE=10.04

После установки стоит версию вернуть обратно.

source /opt/intel/bin/compilervars.sh intel64

и можно проверить компилятор

Old Intel Fortran

(по мотивам)

Распакуем:

 tar xvzf l_ict_p_3.2.020.tar.gz
 cd l_ict_p_3.2.020/

Поставим лицензию:

 mkdir -p ~/intel/licenses/
 cp ../COM_L_CMPCT__L95L-GR3TV2F2.lic  ~/intel/licenses/

Распакуем в rpm-ы:

 ./install.sh --extract=/home/stas/oldintel/l_ict_p_3.2.020/rpms

Преобразуем в deb

 alien -c *.rpm

Поставим фортран

 dpkg --install intel-cprof110074e_11.0-2_amd64.deb

Поменяем симлинк sh

 rm /bin/sh
 ln -s /bin/bash /bin/sh

Поправим скрипты запуска ifort

 sed -i 's/<INSTALLDIR>/\/opt\/intel\/Compiler\/11.0\/074/g' /opt/intel/Compiler/11.0/074/bin/ifortvars.sh
 sed -i 's/<INSTALLDIR>/\/opt\/intel\/Compiler\/11.0\/074/g' /opt/intel/Compiler/11.0/074/bin/intel64/ifortvars_intel64.sh
 sed -i 's/<INSTALLDIR>/\/opt\/intel\/Compiler\/11.0\/074/g' /opt/intel/Compiler/11.0/074/bin/intel64/ifort

Запускаем

 source /opt/intel/Compiler/11.0/074/bin/ifortvars.sh intel64

Old Intel C++ (после установки Old Intel Fortran)

 cd "директория с пакетами "deb", см. установку "Old Intel Fortran" "
 dpkg -i --force-all intel-cproc110074e_11.0-2_amd64.deb

проверим:

 dpkg --list | grep intel

Пропишем пути:

 sed -i 's/<INSTALLDIR>/\/opt\/intel\/Compiler\/11.0\/074/g' /opt/intel/Compiler/11.0/074/bin/iccvars.sh
 sed -i 's/<INSTALLDIR>/\/opt\/intel\/Compiler\/11.0\/074/g' /opt/intel/Compiler/11.0/074/bin/intel64/iccvars_intel64.sh
 sed -i 's/<INSTALLDIR>/\/opt\/intel\/Compiler\/11.0\/074/g' /opt/intel/Compiler/11.0/074/bin/intel64/icc
 sed -i 's/<INSTALLDIR>/\/opt\/intel\/Compiler\/11.0\/074/g' /opt/intel/Compiler/11.0/074/bin/intel64/icpc
 source /opt/intel/Compiler/11.0/074/bin/iccvars.sh intel64

NFS

сервер

 apt-get install nfs-kernel-server
 mkdir -p /export/users
 mount --bind /home /export/users
 echo "/export/users 192.168.1.0/24(rw,nohide,insecure,no_subtree_check,async)" >> /etc/exports
 /etc/init.d/nfs-kernel-server restart

клиент

 modprobe nfs
 mount -t nfs4 bladerunner:/export/users /home

Нужно синхронизировать время:

ntpdate

Ubuntu comes with ntpdate as standard, and will run it once at boot time to set up your time according to Ubuntu's NTP server. However, a server's clock is likely to drift considerably between reboots, so it makes sense to correct the time occasionally. The easiest way to do this is to get cron to run ntpdate every day. With your favourite editor, as root, create a file /etc/cron.daily/ntpdate containing:

ntpdate ntp.ubuntu.com The file /etc/cron.daily/ntpdate must also be executable.

 sudo chmod 755 /etc/cron.daily/ntpdate

ntpd

ntpdate is a bit of a blunt instrument - it can only adjust the time once a day, in one big correction. The ntp daemon ntpd is far more subtle. It calculates the drift of your system clock and continuously adjusts it, so there are no large corrections that could lead to inconsistent logs for instance. The cost is a little processing power and memory, but for a modern server this is negligible.

To set up ntpd:

 sudo apt-get install ntp

MPICH and SLURM

Installing SLURM (на сервере и блейдах)

 apt-get install -y slurm-llnl

Installing MPICH2 (на сервере и блейдах)

надо ставить из исходников что-бы собрать с поддеркой slurm-pmi качаем, распаковываем
 ./configure  F77=ifort FC=ifor --with-pmi=slurm --with-pm=no
 make && make install

Настроим munge: для этого надо на одном из хостов запустить утилиту create-munge-key, после этого скопировать файл /etc/munge/munge.key на остальные сервера кластера:

 scp /etc/munge/munge.key blade1:/etc/munge/munge.key
 scp /etc/munge/munge.key blade2:/etc/munge/munge.key
 scp /etc/munge/munge.key blade3:/etc/munge/munge.key
 scp /etc/munge/munge.key blade4:/etc/munge/munge.key
 scp /etc/munge/munge.key blade5:/etc/munge/munge.key
 scp /etc/munge/munge.key blade6:/etc/munge/munge.key
 scp /etc/munge/munge.key blade7:/etc/munge/munge.key
 scp /etc/munge/munge.key blade8:/etc/munge/munge.key

Владельцeм поставить munge:munge

 chown munge:munge /etc/munge/munge.key
 ls -l /etc/munge/munge.key
 /root/bin/rshall chown munge:munge /etc/munge/munge.key
 /root/bin/rshall ls -l /etc/munge/munge.key
Запустим:
 /etc/init.d/munge start
 /root/bin/rshall /etc/init.d/munge start

Пропишем необходимые все хосты в файле /etc/hosts (на всех машинах):

 scp /etc/hosts blade1:/etc/hosts
 scp /etc/hosts blade2:/etc/hosts
 scp /etc/hosts blade3:/etc/hosts
 scp /etc/hosts blade4:/etc/hosts
 scp /etc/hosts blade5:/etc/hosts
 scp /etc/hosts blade6:/etc/hosts
 scp /etc/hosts blade7:/etc/hosts
 scp /etc/hosts blade8:/etc/hosts

Для конфигурации SLURM лучше воспользовать убунтовой версией конфигуратора (лежит в /etc/share где-то). Готовый конфиг для slurm (на 8 блейдов в январе 2012) (При необходимости на каждом из хостов можно запустить slurmd -C для просмотра его реального аппаратного конфига) Скопируем конфиг slurm.conf:

 scp /etc/slurm-llnl/slurm.conf blade1:/etc/slurm-llnl/slurm.conf
 scp /etc/slurm-llnl/slurm.conf blade2:/etc/slurm-llnl/slurm.conf
 scp /etc/slurm-llnl/slurm.conf blade3:/etc/slurm-llnl/slurm.conf
 scp /etc/slurm-llnl/slurm.conf blade4:/etc/slurm-llnl/slurm.conf
 scp /etc/slurm-llnl/slurm.conf blade5:/etc/slurm-llnl/slurm.conf
 scp /etc/slurm-llnl/slurm.conf blade6:/etc/slurm-llnl/slurm.conf
 scp /etc/slurm-llnl/slurm.conf blade7:/etc/slurm-llnl/slurm.conf
 scp /etc/slurm-llnl/slurm.conf blade8:/etc/slurm-llnl/slurm.conf

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

 /etc/init.d/slurm-llnl start
 /root/bin/rshall /etc/init.d/slurm-llnl start

И, наконец, поставим на всех машинах libpmi

 apt-get -y install libpmi0-dev

SLURM manual

LAMMPS

=== g++ ===

Поставим зависимости

 aptitude install libjpeg62-dev fftw2 fftw-dev

если будет вопрос про конфигурацию postfix, отвечать выбранный вариант.

Соберём LAMMPS

 make g++
 финальный шаг сборки сделать вручную, дописав -lpmi

"финальный шаг сборки сделать вручную, дописав -lpmi" = найти в сообщении компилятора "g++ -g -O angle_charmm.o <…> -lmpich -lmpl -lpthread -lfftw -ljpeg -o ../lmp_g++", заменить на "g++ -g -O angle_charmm.o <…> -lmpich -lmpl -lpthread -lfftw -ljpeg -lpmi -o ../lmp_g++", вместо <…> вставить всё что там было и выполнить.

на блейдах

 aptitude install libjpeg62-dev fftw2 fftw-dev

проверим

 srun -n 2 lmp_g++ < in.lj

=== icc ===

Тестируем

Про пользователей

Каждому прописать в ~/.bashrc

source /opt/intel/Compiler/11.0/074/bin/ifortvars.sh intel64 source /opt/intel/Compiler/11.0/074/bin/iccvars.sh intel64

Дополнения

Как убирать пакеты:

aptitude purge <имя пакета>

Как найти нужный пакет:

 dpkg --list | grep <ключевое слово>

Запуск (старого) компилятора ifort с mpi:

 mpif77 -fc=ifort test.f

Если

 ./configure  F77=ifort FC=ifor --with-pmi=slurm --with-pm=no

даёт

 configure: error: ****  Incompatible Fortran and C Object File Types!  ****
 F77 Object File Type produced by "ifort  " is : : ERROR: cannot open `' (No such file or directory).
 C  Object File Type produced by "gcc    -O2" is : : ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped.

то

 aptitude install libpmi0-dev
 ./configure  F77=gfortran --with-pmi=slurm --with-pm=no

username:password

есть стандартная утилита chpasswd

принимает на вход набор строк вида username:password то есть можно сделать файл с паролями и выполнить
cat users.txt | chpasswd

cap

если находитесть с папке с Capfile, то можно набрать cap shell на блейдраннере он лежит в /root cap shell запускать команды будет одновременно на всех машинах на всех блейдах

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

Mathematica 7.0

Нужно поставить gnome

 sudo apt-get install xorg
 sudo apt-get install openbox
 sudo apt-get install ubuntu-desktop
 sudo apt-get install gnome-panel

-- потом MathInstaller с диска.

ссылки

http://cluster.linux-ekb.info/

http://www.nccs.gov/user-support/training-education/hpcparallel-computing-links/mpi-examples/

https://computing.llnl.gov/

Что ещё нужно сделать

  • Разобраться с пользователями.
  • поправить скрипт /root/bin/rshall : добавить в него bladerunner; исправить описания команд.
  • написать скрипт для копирования файлов на блейды[1-8]; исправить описания команд.
  • добавить компиляторы из gfortran (mpif90, mpif77,...) -- описания про них как завести.