Документ взят из кэша поисковой машины. Адрес оригинального документа :
http://wiki.cs.msu.ru/Main/RegattaCompilation?cover=print;raw=on
Дата изменения: Unknown
Дата индексирования: Mon Apr 11 05:43:12 2016
Кодировка: koi8-r
---+++ <br /> О параллельном программировании для вычислительного комплекса IBM Regatta. В качестве средства для написания параллельных программ для многопроцессорных систем чаще всего используют 2 стандарта: * *OpenMP* - стандарт для написания параллельных программ в условиях общей памяти. Программа представляется как набор потоков объединённых общей памятью, где проблема синхронизации решается введением критических секций и приватных переменных,. информацию о нём можно найти на http://www.openmp.org. (на русском языке http://www.parallel.ru/tech/tech_dev/openmp.html.) * Message Passing Interface (*MPI*) - стандарт, предназначенный для написания программ в условиях разделённой памяти, данный стандарт описывает параллельную программу как набор нитей, взаимодействующих посредством передачи сообщений. информацию о нём можно найти на http://www.mpi-forum.org. (на русском языке http://www.parallel.ru/tech/tech_dev/mpi.html) ---+++ Подготовка заданий (компиляция программ) Для компилирования программ на комплексе установлены фирменные компиляторы IBM поддерживающие языки программирования C, C++, Fortran77, Fortran90. С помощью комплекта компиляторов, присутствующих на системе можно собирать как обычные программы, так и программы, использующие !OpenMP и MPI. <pre>компилятор Программы Программы Обычные OpenMP MPI программы C <b> Xlc_r </b> <b> mpicc </b> <b> xlc</b> С++ <b> XlC_r </b> <b> mpiCC </b> <b> xlC</b> Fortran77 <b> Xlf_r </b> <b> mpif </b> <b> xlf</b> Fortran90 <b> xlf90_r</b> <b> mpif90 </b> <b> xlf90</b> </pre> <br /> <br />Для всех компиляторов, не только компиляторов IBM, но и *gcc*, а так же большинства других компиляторов, имеются следующие ключи: <br /> <br />-<b>I</b> include_dir - опция, которая задаёт пути для поиска include файлов. <br />-<b>L</b> library_dir - задаёт пути для поиска подключаемых библиотек. <br />-<b>l</b> library_name - линкует с указанной библиотекой, <br />-<b>c</b> - только компиляция без линковки. <br />-<b>g</b> - добавление отладочной информации в бинарный код, после этого при запуске программы через отладчик будет доступна информация об исходном коде программы. <br />-<b>o</b> file_name - задаёт имя файла, который будет получен как результат деятельности компилятора, например: xlc -o test test.c sub_test.c будет создан бинарный файл, который собственно и есть программа, которую можно исполнять. <br />-<b>O</b> - Опция начального уровня оптимизации. <br /> <br />Нестандартные ключи компиляторов IBM: <br /> <br />-<b>qsmp=omp</b> обеспечивает возможность писать программы с использованием !OpenMP стандарта. <br />-<b>qsmp=auto</b> для автоматического распараллеливания программ для SMP архитектур, <br />-<b>qarch=pwr4</b> - тогда компилятор будет генерировать оптимальный код для Power4 процессоров. <br />-<b>q64, -q32</b> - используются для указания, сколько разрядный код генерировать. Если ключ не указан, то по умолчанию установлен ключ -q64 <br />-<b>b64, -b32</b> - указывает линкеру ld связывать 64-битные объекты или 32-х битные. <br />-<b>qlanglvl=extc99:ucs</b> для использования в тексте кода комментариев на русском языке; <br />-<b>cpluscmt</b> при использовании символа комментария "//" в коде на С. <br />-<b>qhot</b> оптимизация кода с принудительным внедрением параллелизма внутрь кода, здесь начинает использоваться параллелизм функциональных устройств архитектуры Power4. Тем самым, можно добиться ускорения на одном Power4 процессоре до 8-раз. При этом нарушается последовательность команд, которая была задана в исходном файле. В результате, программа становится недетерминированной. <br />-<b>bmaxdata=size</b> которая задаёт максимальный размер выделяемой динамически памяти в байтах. Эту опцию стоит использовать если возникают проблемы с использованием большого объёма динамической памяти программой написанной на C или C++. ( bmaxdata=0x1000000000 - размер выделяемой динамической памяти в 1Gb. ) <br />-<b>qlargepage</b> будут использоваться большие таблицы виртуальной памяти, что увеличит производительность программы, если она использует большие объёмы памяти. <br /> <br />Посмотреть более подробную информацию об опциях компиляторов вы можете, набрав в командной строке *xlc* - для С, и *xlf* - для Фортрана. <br /> <br />Примеры: <br /> <br /><i>xlc_r -qsmp=omp -O3 -qarch=pwr4 -q64 -o my_c_program.c</i> <br /> <br />скомпилирует все находящиеся в данной директории <b>.</b>c файлы в исполняемый 64-х разрядный файл с именем my_с_program, оптимизирует его под имеющуюся архитектуру, и учтет все директивы !OpenMP. Можно попытаться использовать опцию автоматического распараллеливания:<b> <br /> <br /></b><i>xlf_r -qsmp=auto -qarch=pwr4 -q64 -o my_fortran_program.f</i><b> <br /> <br /></b>Посмотреть более подробную информацию об опциях компиляторов вы можете, набрав в командной строке <b>xlc - </b>для С<b>, </b>и<b> xlf </b>- для Фортрана.<b> <br /> <br /></b>Для сборки собственных программ рекомендуется использовать make. На комплексе установлена GNU разновидность make. Она вызывается по команде gmake. Для использования make необходимо написать Makefile. Самое начальное описание того, как писать Makefile на русском языке http://www.linux.org.ru/books/make.html. Полное описание GNU make можно найти на сайте http://www.gnu.org/software/make/.<b> <br /> </b><br />Для создания и запуска программ написанных с использованием *MPI* стандарта на комплексе установлен пакет mpich версии 1.2.5. Компиляция программ, использующих<b> MPI</b> производится при помощи стандартных для *Mpich* утилит: * *mpicc* - C компилятор; * *mpiCC* - С++ компилятор; * *mpif* - Fortran 77 компилятор; * *mpif90* - Fortran 90 компилятор. Для получения дополнительной информации можно читать мануалы (man mpirun, man mpicc, man mpiCC, ... ) <br /><a name="lunch"></a> -- Main.CostyaZhukov - 19 Jun 2013
This topic: Main
>
WebHome
>
RegattaInstructions
>
RegattaCompilation
Topic revision:
25 Jun 2013,
CostyaZhukov
(raw view)
Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki?
Send feedback