Содержание

Установка

Для работы с библиотекой EMTL необходимо:

Чтобы иметь возможность запускать версию библиотеки EMTL для параллельного режима работы (EMTL MPI), необходимо установить библиотеку MPI. Параллельный режим работы позволяет производить вычисления одновременно на нескольких ядрах процессора или на нескольких процессорах в кластере. Все функции EMTL, использующие вызовы MPI, поставляются в виде исходного кода (файл implmpi.cpp), поэтому можно использовать любую реализацию MPI. Если Вы работаете на ОС Windows, то можно установитьMPICH2.

Установка необходимых пакетов программ

Установка FFTW

Для того чтобы использовать EMTL, нужно установить библиотеку быстрого преобразования Фурье FFTW.

Дистрибутив FFTW для UNIX находится здесь. Для установки его нужно скачать (с помощью команды wget, аргументом которой служит ссылка на архив), разархивировать (с помощью команд gunzip и tar –xvf) и установить согласно инструкции с сайта FFTW, а именно, нужно последовательно выполнить три команды:

./configure
make
make install
Для того, чтобы установить FFTW в выбранную директорию, напишите:
./configure –prefix=your_directory_name


Дистрибутив FFTW для Windows находится здесь. Для установки под Windows необходимо скачать этот архив и распаковать. В нем имеются файлы fftw3.h, fftw3.lib и fftw3.dll. Чтобы все работало, необходимо:

Установка MPICH2

Для того, чтобы иметь возможность запускать параллельную версию библиотеки EMTL (EMTL MPI) под Windows нужно установить MPICH2. О том, как это сделать читайте на сайте MPICH2.

Содержание архива EMTL

В папке include находятся заголовочные файлы EMTL.

В папке vs10/Release и vs10/Debug находятся библиотечные файлы libemtl.lib для Miscrosoft Visual Studio 10.

В папках unix/_gcc и unix/_gcc_mpi находятся последовательная и параллельная версия библиотечного файла для UNIX lib_emtl.a.

В папках tests находятся тестовые проекты с примерами расчетов:

В каждой такой папке содержится исходный файл C++ с заданием эксперимента FDTD, а также папка unix с makefile и папка vs10 с файлом проекта для Visual Studio 10.

О том, как компилировать тестовые проекты под различные операционные системы написано ниже. Подробнее о тестовых проектах читайте в разделе Учебный курс.

Компиляция под UNIX

Правила компиляции кода С++ в UNIX (в частности, описание makefile) можно почитать здесь.

Компиляция EMTL под UNIX

Вы можете использовать готовый makefile (tests/test_mie/unix/Makefile). Мы его создали используя Paul D. Smith rules.

Этот makefile по умолчанию компилирует test_mie.cpp, однако вы можете указать другой файл в строчке SRC_MAIN. Makefile использует файлы Makefile.arch и Makefile.target files из папки ivutils.

Вы должны указать ваши настройки в Makefile.arch, избрав для них какое-нибудь имя (смотрите примеры в Makefile.arch). Настройки это

Имя по умолчанию _ARCH=gnu соответствует компилятору gcc.

Дальше вам нужно перейти в директорию tests/test_mie/unix

cd tests/test_mie/unix
и скомпилировать последовательную версию
make _ARCH=<your_archname>
или параллельную версию
make _ARCH=<your_archname> _MPI=true

Исполняемый файл будет записан в директорию _<your_archname> или _<your_archname>_mpi.

Если вы хотите сами создать Makefile

тогда вам в нем нужно указать:

Также нужно скомпилировать файл ivutils/src/implmpi.cpp. При компиляции параллельной версии нужно использовать макроопределение препроцессора С++ USE_MPI.

Компиляция под Windows (Visual Studio 2005)

В начале немного теории. Сейчас мы в общих чертах напишем о том, как компилировать код C++ в Visual Studio:

Для создания проекта Visual Studio выбираем закладку File > New > Project. В выплывшем окошке выбираем Empty Project.

После этого в папке, которую вы укажете в окошке Location, создастся ряд файлов, один из которых имеет расширение *.vcproj. При запуске проекта нужно открывать именно этот файл. Слева в редакторе Visual Studio находится следующее окошко.

*.cpp файлы проекта должны находиться в папках из этого окошка. Среди всех *.cpp файлов должен быть один файл, содержащий функцию main, откуда осуществляется вход в программу. Создадим, например, в папке test файл test.cpp с программой “Hello World”:

#include <stdio.h>
 
int main(){
  printf("Hello world");
  return 1;
}

После чего подключим этот файл в проект. Для этого нажмем правой кнопкой мыши на Source Files (точно так же можно нажать и на другую папку), выберем Add > Existing Item и в открывшемся окошке выберем файл test.cpp.

Для того, чтобы скомпилировать проект, нужно нажать Build > Build Solution. Для того, чтобы его запустить, - Debug > Start Debugging.

Рекомендуется написать в Configuration Properties > C/C++ > Preprocessor > Preprocessor Definitions строчку _CRT_SECURE_NO_DEPRECATE для того, чтобы сократить число ненужных предупреждений при компиляции программы.

Проект может компилироваться в двух различных режимах: Debug и Release:

Переключение между этими двумя режимами осуществляется в окошке Debug > Configuration Manager. Для обоих режимов создаются подпапки Debug и Release. В процессе компиляции в них записываются исполняемые файлы с расширением *.exe, которые можно запускать независимо от Visual Studio в командной строке Windows.

Для того, чтобы можно было пошагово выполнять программу в режиме Debug, необходимо сделать следующие изменения в окошке Project > Project Properties:

После этого мы можем ставить breakpoinerы в коде программы

и выполнять ее пошагово (Debug > Step Over, Debug > Step Into, Debug > Step Out). В нижнем окошке Watch можно смотреть значения переменных (для этого нужно внести в столбец Name имя переменной, а в столбце Value посмотреть на значение).

Если в программе используются заголовочные файлы с расширением *.h, нужно указать папки, в которых их будет искать компилятор. Это делается в Project > Project Properties > Configuration Properties > C/C++ > General > Additional Include Directories. Папки перечисляются через запятую. При названии папки можно использовать абсолютный путь или относительный (который отсчитывается от папки проекта).
Если программа задействует библиотечные файлы с расширением *.lib, их нужно перечислить через пробел в Project > Project Properties > Configuration Properties > Linker > Input > Additional Dependencies. Если вы хотите добавить папки по умолчанию, в которых компилятор будет искать заголовочные и библиотечные файлы, вам нужно воспользоваться Tools > Options > Project and Solutions > VC++ Directories. Добавьте эти папки в список папок для Include Files и Library Files.



Компиляция EMTL под Windows

В каждой директории с тестовым проектом есть поддиректория vs10, в которой находится готовый проект для MS Visual Studio 10 с несколькими конфигурациями. Для компиляции достаточно открыть его в Visual Studio, выбрать необходимую конфигурацию, указать пути к файлам FFTW и, если это необходимо, к файлам MPICH2.

Путь к файлам fftw3.h и fftw3.lib нужно указать в закладке Visual Studio Tools > Options > Project and Solutions > VC++ Directories в списках Include Files и Library Files.

Если вы используете MPICH2, то нужно указать пути:

в списках Executable Files, Include Files и Library Files.

Также нужно перечислить библиотечные файлы в Project > Project Properties > Configuration Properties > Linker > Input > Additional Dependencies. Это, во-первых, один из библиотечных файлов из photonic/vs8/lib (нужный файл зависит от того, находитесь вы в режиме Debug или Release, и используете ли вы последовательную или параллельную версию). Во-вторых, это fftw3.lib. В-третьих, это mpi.lib, если вы используете MPICH2.

Если вы компилируете параллельную версию, вам нужно добавить в Configuration Properties > C/C++ > Preprocessor > Preprocessor Definitions макроопределение USE_MPI.

Для подключения EMTL, нужно вставить заголовочный файл uiexp.h в ваш *.cpp файл

#include "uiexp.h";
Для отладки параллельной версии под MPICH2 непосредственно из Visual Studio (доступно для пользователей VS Pro) нужно выбрать в Project > Project Properties > Configuration Properties > Debugging > Debugger to launch значение MPI Cluster Debugger. Далее нужно заполнить следующие поля: