Доброго времени суток! Эта статья является продолжением 1 части.
После сборки конструкции кластера, перейдем к программному обеспечению для его функционирования.
Сегодня установим необходимые пакеты для измерения производительности:
- MPI - интерфейс, при помощи которого происходит обмен сообщениями между процессами, выполняющими одну задачу,
- ATLAS - библиотека линейной алгебры,
- HPL - пакет с набором тестов для оценки производительности.
Устанавливать пакеты будем на главном узле, в последствии с которого будут запускаться тесты. Установленный софт нужно будет переслать по остальным узлам.
За работу
Открываем терминал на Raspberry и начинаем:
Устанавливаем gfortran:
sudo apt install gfortran automake
Создадим директорию для сборки наших пакетов и перейдем в нее:
mkdir ~/tmp
cd ~/tmp
Скачиваем исходники MPICH и распаковываем:
wget https://www.mpich.org/static/downloads/3.4a3/mpich-3.4a3.tar.gz
tar xzvf mpich-3.4a3.tar.gz
Переходим в распакованную директорию и начинаем сборку:
cd mpich-3.4a3
./configure --with-device=ch3:sock
make -j 4
sudo make install
Вернемся в нашу директорию tmp:
cd ~/tmp
Следующий шаг займет много времени.
Скачиваем, распаковываем и начинаем сборку Atlas:
wget https://sourceforge.net/projects/math-
atlas/files/Stable/3.10.3/atlas3.10.3.tar.bz2
tar xjvf atlas3.10.3.tar.bz2
mkdir -p ~/tmp/atlas-build
cd ~/tmp/atlas-build
../ATLAS/configure
make
Возвращаемся в tmp:
cd ~/tmp
Скачиваем, распаковываем и начинаем сборку Atlas:
wget http://www.netlib.org/benchmark/hpl/hpl-2.3.tar.gz
tar xzvf hpl-2.3.tar.gz
cd hpl-2.3
cd setup
sh make_generic
cp Make.UNKNOWN ../Make.rpi
cd ..
Далее в файле необходимо указать установленные нами пакеты, чтобы связать их с HPL:
gedit Make.rpi
Файл, после внесения поправок, должен выглядеть так:
# ----------------------------------------------------------------------
# - Platform identifier ------------------------------------------------
# ----------------------------------------------------------------------
#
ARCH = rpi
#
# ----------------------------------------------------------------------
# - HPL Directory Structure / HPL library ------------------------------
# ----------------------------------------------------------------------
#
TOPdir = $(HOME)/tmp/hpl-2.3
INCdir = $(TOPdir)/include
BINdir = $(TOPdir)/bin/$(ARCH)
LIBdir = $(TOPdir)/lib/$(ARCH)
#
HPLlib = $(LIBdir)/libhpl.a
#
# ----------------------------------------------------------------------
# - Message Passing library (MPI) --------------------------------------
# ----------------------------------------------------------------------
# MPinc tells the C compiler where to find the Message Passing library
# header files, MPlib is defined to be the name of the library to be
# used. The variable MPdir is only used for defining MPinc and MPlib.
#
MPdir = /usr/local
MPinc = -I /usr/local/include
MPlib = /usr/local/lib/libmpich.so
#
# ----------------------------------------------------------------------
# - Linear Algebra library (BLAS or VSIPL) -----------------------------
# ----------------------------------------------------------------------
# LAinc tells the C compiler where to find the Linear Algebra library
# header files, LAlib is defined to be the name of the library to be
# used. The variable LAdir is only used for defining LAinc and LAlib.
#
LAdir = /home/pi/tmp/atlas-build
LAinc =
LAlib = $(LAdir)/lib/libf77blas.a $(LAdir)/lib/libatlas.a
Сохраняем и выходим из файла.
И последним шагом прописываем:
make arch=rpi
Итоги
На этом сегодня все! В следующей части, полностью настроим сетевое взаимодействие кластера и попробуем посчитать его производительность!
Спасибо за внимание! Всего Вам хорошего)