Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

ru:installation [2013/04/20 11:17]
deinega [Установка]
ru:installation [2013/04/20 11:18] (текущий)
deinega [Содержание архива EMTL]
Строка 1: Строка 1:
 +====== Установка ======
 +
 +Для работы с библиотекой EMTL необходимо:
 +  * скачать [[download|архив EMTL]];
 +  * скачать архив [[ivutils|ivutils]] и положить его в ту же директорию, где находится EMTL;
 +  * [[ru/download|скачать]] и установить библиотеку быстрого преобразования Фурье [[http://www.fftw.org/download.html|FFTW]].
 +
 +Чтобы иметь возможность запускать версию библиотеки EMTL для параллельного режима работы (EMTL MPI), необходимо установить библиотеку MPI.  Параллельный режим работы позволяет производить вычисления одновременно на нескольких ядрах процессора или на нескольких процессорах в кластере. Все функции EMTL, использующие вызовы MPI, поставляются в виде исходного кода (файл implmpi.cpp), поэтому можно использовать
 +любую реализацию MPI. Если Вы работаете на ОС Windows, то можно установить[[http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads
 +|MPICH2]]. 
 +
 +/*
 +В текущей версии открытой библиотеки EMTL предоставляются неоптимизированные версии некоторых внутренних циклов FDTD.
 +Для получения оптимизированной версии, позволяющей существенно ускорить расчеты, обращайтесь в Kintech Lab.
 +Для академических структур мы готовы предоставлять оптимизированную версию.
 +*/
 +====== Установка необходимых пакетов программ ======
 +
 +===== Установка FFTW =====
 +
 +Для того чтобы использовать EMTL, нужно установить библиотеку быстрого преобразования Фурье FFTW.
 +
 +**Дистрибутив FFTW для UNIX** находится [[http://www.fftw.org/download.html|здесь]]. Для установки его нужно скачать (с помощью команды wget, аргументом которой служит ссылка на архив), разархивировать (с помощью команд gunzip и tar –xvf) и установить согласно [[http://www.fftw.org/fftw3_doc/Installation-on-Unix.html#Installation-on-Unix|инструкции с сайта FFTW]], а именно, нужно последовательно выполнить три команды:
 +<code>
 +./configure
 +make
 +make install
 +</code>
 +Для того, чтобы установить FFTW в выбранную директорию, напишите: 
 +<code>
 +./configure –prefix=your_directory_name
 +</code>
 +\\
 +\\
 +**Дистрибутив FFTW для Windows** находится [[ftp://ftp.fftw.org/pub/fftw/fftw-3.0.1-w32-pl1.zip|здесь]]. Для установки под Windows необходимо скачать этот архив и распаковать. В нем имеются файлы fftw3.h, fftw3.lib и fftw3.dll. Чтобы все работало, необходимо:
 +  * добавить путь к fftw3.h к путям include проекта,
 +  * добавить fftw3.lib к подкомпилируемым библиотекам проекта.
 +  * поместить файл fftw3.dll в папку WINDOWS\system32.
 +===== Установка MPICH2 =====
 +
 +Для того, чтобы иметь возможность запускать параллельную версию библиотеки EMTL (EMTL MPI) под  Windows нужно установить [[http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads|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 находятся тестовые проекты с примерами расчетов:
 +  * test_plate - прохождение волны через пластинку
 +  * test_mie - рассеяние на сфере
 +В каждой такой папке содержится исходный файл C++ с заданием эксперимента FDTD, а также папка unix с makefile и папка vs10 с файлом проекта для Visual Studio 10.
 +
 +О том, как компилировать тестовые проекты под различные операционные системы написано ниже. Подробнее о тестовых проектах читайте в разделе [[tutorial]].
 +
 +====== Компиляция под UNIX ======
 +
 +Правила компиляции кода С++ в UNIX (в частности, описание makefile) можно почитать [[http://revolution.allbest.ru/programming/00015190_0.html|здесь]]. 
 +
 +===== Компиляция EMTL под UNIX =====
 +
 +Вы можете использовать готовый makefile (tests/test_mie/unix/Makefile).
 +Мы его создали используя [[http://make.paulandlesley.org/multi-arch.html|Paul D. Smith rules]].
 +
 +Этот makefile по умолчанию компилирует test_mie.cpp, однако вы можете указать другой файл в строчке SRC_MAIN. 
 +Makefile использует файлы Makefile.arch и Makefile.target files из папки ivutils.
 +
 +Вы должны указать ваши настройки в Makefile.arch, избрав для них какое-нибудь имя (смотрите примеры в Makefile.arch). Настройки это
 +  * FFTW_PATH - ваш путь к библиотеке FFTW;
 +  * CPP - название вашего компилятора С++.
 +Имя по умолчанию _ARCH=gnu соответствует компилятору gcc.
 +
 +Дальше вам нужно перейти в директорию tests/test_mie/unix
 +<code>
 +cd tests/test_mie/unix
 +</code>
 +и скомпилировать последовательную версию
 +<code>
 +make _ARCH=<your_archname>
 +</code>
 +или параллельную версию
 +<code>
 +make _ARCH=<your_archname> _MPI=true
 +</code>
 + 
 +Исполняемый файл будет записан в директорию _<your_archname> или _<your_archname>_mpi.
 +
 +===== Если вы хотите сами создать Makefile =====
 +
 +тогда вам в нем нужно указать:
 +  * пути к заголовочным файлам EMTL (папки photonic и ivutils/include) и заголовочным файлам FFTW;
 +  * используемые библиотечные файлы EMTL - lib_emtl.a и FFTW - libfftw3.a. 
 +
 +Также нужно скомпилировать файл ivutils/src/implmpi.cpp. При компиляции параллельной версии нужно использовать макроопределение препроцессора С++ USE_MPI.
 +
 +====== Компиляция под Windows (Visual Studio 2005) ======
 +
 +В начале немного теории. Сейчас мы в общих чертах напишем о том, как компилировать код C++ в Visual Studio:
 +
 +Для создания проекта Visual Studio выбираем закладку File > New > Project. В выплывшем окошке выбираем Empty Project.
 +
 +{{:install:install_windows_1.png|}}
 +
 +После этого в папке, которую вы укажете в окошке Location, создастся ряд файлов, один из которых имеет расширение *.vcproj. При запуске проекта нужно открывать именно этот файл.
 +Слева в редакторе Visual Studio находится следующее окошко.
 +
 +{{:install:install_windows_2.png|}}
 +
 +*.cpp файлы проекта должны находиться в папках из этого окошка. Среди всех *.cpp файлов должен быть один файл, содержащий функцию main, откуда осуществляется вход в программу.
 +Создадим, например, в папке test файл test.cpp с программой “Hello World”:
 +
 +<code cpp>
 +#include <stdio.h>
 +
 +int main(){
 +  printf("Hello world");
 +  return 1;
 +}
 +</code>
 +
 +После чего подключим этот файл в проект. Для этого нажмем правой кнопкой мыши на Source Files (точно так же можно нажать и на другую папку), выберем Add > Existing Item и в открывшемся окошке выберем файл test.cpp.
 +
 +{{:install:install_windows_3.png|}}
 +
 +Для того, чтобы скомпилировать проект, нужно нажать Build > Build Solution.
 +Для того, чтобы его запустить, - Debug > Start Debugging.
 +
 +Рекомендуется написать в Configuration Properties > C/C++ > Preprocessor > Preprocessor Definitions строчку _CRT_SECURE_NO_DEPRECATE для того, чтобы сократить число ненужных предупреждений при компиляции программы.
 +
 +Проект может компилироваться в двух различных режимах: Debug и Release:
 +  * Режим Debug позволяет пошагово выполнять программу, пользоваться breakpoinerами, смотреть на текущие значения переменных во время исполнения программы. Этот режим используется для отладки.
 +  * Режим Release этого не позволяет, однако работает существенно быстрее. Этот режим используется для расчетов.
 +Переключение между этими двумя режимами осуществляется в окошке Debug > Configuration Manager.
 +Для обоих режимов создаются подпапки Debug и Release. В процессе компиляции в них записываются исполняемые файлы с расширением *.exe, которые можно запускать независимо от Visual Studio в командной строке Windows.
 +
 +Для того, чтобы можно было пошагово выполнять программу в режиме Debug, необходимо сделать следующие изменения в окошке Project > Project Properties:
 +  * Configuration Properties > C/C++ > General. В строке Debug Information Format выбираем Program Database (/Zi).
 +  * Configuration Properties > C/C++ > Optimization. В строке Optimization выбираем Disabled (/Od).
 +  * Configuration Properties > Linker > Debugging. В строке Generate Debug Info выбираем Yes (/DEBUG).
 +После этого мы можем ставить breakpoinerы в коде программы
 +
 +{{:install:install_windows_3_.png|}}
 +
 +и выполнять ее пошагово (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.
 +
 +{{:install:install_windows_4.png|}}
 +\\
 +\\
 +===== Компиляция 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, то нужно указать пути:
 +  * Program Files\MPICH2\bin
 +  * Program Files\MPICH2\include
 +  * Program Files\MPICH2\lib
 +в списках 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 файл 
 +<code cpp>
 +#include "uiexp.h";
 +</code>
 +Для отладки параллельной версии под MPICH2 непосредственно из Visual Studio (доступно для пользователей VS Pro) нужно выбрать в Project > Project Properties > Configuration Properties > Debugging > Debugger to launch значение MPI Cluster Debugger. Далее нужно заполнить следующие поля:
 +  * MPIRun Command: mpiexec.exe
 +  * MPIRun Arguments: localonly n (n – число запускаемых потоков)
 +  * MPIRun Working Directory: $(OutDir)
 +  * MPIShim Location: путь к файлу mpishim.exe (например, C:/Program Files/Microsoft Visual Studio 8/Common7/IDE/Remote Debugger/x86/mpishim).
  
 
    Наверх