УНИТе

Портал > Документация > Инсталиране на PGI компилатори под Linux

Инсталиране на PGI компилатори под Linux

Съдържание:

  1. Предварителна информация
  2. Изтегляне на инсталатора на "community edition" версията
  3. Изтегляне на инсталатора на "professional edition" версията
  4. Инсталиране
  5. Задаване на променливите на средата (PATH и LD_LIBRARY_PATH)
  6. Стартиране на процеса на лицензния демон lmgrd

 

1. Предварителна информация

Пакетът с компилатори на PGI Group се предлага в два варианта:

  • community edition (безплатен, с ограничения)

    Инсталирайки този вариант на пакета, вие може да го използвате докато изтече времето на живот на версията му. Компилираният с този лиценз изпълним код, има време на живот. След като изтече времето му на живот (зададено като крайна дата, час, минути, секунди), този изпълним код става неизползваем. В този случай, всеки път, когато времето на валидност на компилирания изпълним код изтече, трябва да компилирате отново същия програмния код и да създадете нов изпълним код, който ще има нов период на валидност.

  • professional edition (платен, без ограничения)

    Този вариант на лиценза няма ограниченията на "community edition" (посочени по-горе). Чрез него е възможно да активирате инсталации на PGI Compilers, намиращи се на една или повече работни станции в HPC инфраструктурата (в завсимост от конкретния тип на лиценза). Така например, ако използвате "Network floating" лиценз, може да активирате инсталацията на PGI Compilers на толкова работни станции, колкото имате, като валидирането на лиценза става през централизиран сървър, на който слуша демон за регистрация. Този лиценз има ограничение - не може да стартирате един MPI изпълни код на повече от 256 нишки. Ако използвате "Node-locked" лиценз, може да го използвате само на една работна станция. Това не означава еднократна и окончателна активация (лицензът не става автоматично невалиден, след като вече сте го използвали веднъж). Вие може да отрегистрирате станцията, която използва лиценза и да го пренесете на друга. Лицензният мениджър позволява това.

Защо може да ви е нужно да инсталирате PGI компилаторите на вашата Linux работна станция (най-малкото във варианта "community edition") и не е ли достатъчно ако използвате PGI компилаторите, които са достъпни за потребителите в HPC инфратруктурата?

Предварителното компилиране и тестване на изпълнимия код в контролирана от вас инсталация на Linux, е добра практика, защото:

  • може да създавате изпълним код, който да съдържа в себе си настройки за генериране и запазване на debug информация

    Ако стартирате подобен експериментален изпълним код в HPC изчислителната инфраструктура, то това става за сметка на процесорното ви време (което заплащате). В много случаи, изпълнението на кода ще бъде прекратено от мениджъра на задачи, заради наложени лимити върху ресурси, забрана за създаване на "coredump" изображения и др.

  • може да извършвате тестове с изпълнимия код, за които не е е задължително да изпълнявате кода в HPC инфраструктурата

    Пример за това са тестове на експериментални опции, критични стойности на някои входни параметри, а също така и предварително определяне на това колко процесорно време и дисково пространство ще са нужни за изпълнението на задачата, ако бъде изпълнявана в HPC инфраструктурата (оптимизация на разходите).

Какво предлага пакета с PGI Compilers. Пакетът предлага следните компоненти:

  • C/C++ компилатори
  • Fortran 77/90/95/2003/2008 компилатори (унифицирани в един компилатор и отделно)
  • дебъгер за изпълним код
  • специфично компилирана OpenMP библиотека (различна от тази, която се използва с GCC)
  • специфично компилирана MPI билиотека, OpenMpi scalpack (различна от OpenMPI библиотеката налична в системата, която е компилирана чрез GCC)
  • LLVM-верси на компилаторите
  • PGI-компилиран Java JRE
  • Интегрирани CUDA библиотеки и компилатор (от NVidia, разпространявани с PGI Compilers пакета)
  • OpenACC библиотеки, интегрирани с CUDA

 

2. Изтегляне на инсталатора на "community edition" версията

Посетете адрес:

https://www.pgroup.com/products/community.htm

и оттам изтеглете инсталатора за вашата процесорна архитектура - за Linux се поддържат AMD64 (x86_64) и OpenPOWER. За примерите по-долу се предполага, че сте изтеглили инсталатора за AMD64 (x86_64).

Може да използвате инсталатора на "community edition" като "professional edition", ако в хода на инсталацията или след това укажете подобна смяна на лиценза!

3. Изтегляне на инсталатора на "professional edition" версията

За да изтеглите тази версия, трябва да имате профил на сайта на PGI Group и да се удостоверите с името и паролата си:

https://www.pgroup.com/account/login.php

След успешно удостоверяване, влезте в секция "Downloads":

https://www.pgroup.com/support/downloads.php

където трябва да приемете условията за инсталиране, използване и разпространение на кода (1), и типа на инсталатора, който може да е AMD64 (x86_64) и OpenPOWER (2):

Обикновено, професионалната версия е по-нова от тази, която се предлага като "community".

 

4. Инсталиране

Преди да започнете процеса на инсталация, трябва да отчетете следните важни осбености на PGI компилаторите:

  • може да инсталирате повече от една версия на пакета с компилаторите, ако тя и другите (вече инсталирани) версии могат да използват един и същ лицензионен файл или лицензионен мениджър

    Това е възможно, ако файла с лиценза е за последната версия на пакета и покрива старите версии. Обикновено това е така, с изключние на тези версии, които са толкова стари, че имат компоненти, за които няма описание в лиценза. Пример за това е FORTRAN77 компилатора (pgf77), който не се поддържа в последните версии на пакета с компилаторите.

  • може да инсталирате повече от една версия на пакета с компилаторите в една коренова директория

Изтеглете инсталатора по начина, който е показан по-горе [ community | professional ]. След това, създайте времена директория (за примера, това е ~/pgi_installer), в която да разархивирате инсталатора (за примера, архива с инсталатора е файла pgilinux-2019-194-x86-64.tar.gz, но във вашия случай може да е файл с различно име) и го стартирайте от там като супер потребител (sudo):

$ mkdir ~/pgi_installer
$ tar xvf pgilinux-2019-194-x86-64.tar.gz -C ~/pgi_installer
$ sudo ~/pgi_installer/install

Самият инсталатор предлага диалогово меню в команден ред. Когато текста в това меню е дълъг, ще имате възможност да навигирате надолу (ще виждате в долния ляв ъгъл "More", като идикация за това), натискайки клавиша "Space".

Първоначално, трябва да приемете (или откажете) лицензното споразумение за инсталиране, използване и разпространение на кода на PGI:

Do you accept these terms? (accept,decline) accept

Важен параметър на инсталацията е нейния тип. Ако ще инсталирате PGI компилаторите на работна станция, изберете типа инсталация да бъде "Single system install":

1  Single system install
2  Network install

Please choose install option: 1

Ако сте администратор на множество сървъри или работни станции и трябва да инсталирате компилаторите върху всяка една от тях (самата мрежова инсталация става по SSH), ще трябва да изберете "Network install", т.е. да въведете 2.

Освен това, трябва да изберете и инсталационна директория (подразбиращата се е /opt/pgi, виж дискусията относно разположението на тези директория във файловата система):

Installation directory? [/opt/pgi]

В случай, че инсталирате PGI компилаторите на работна станция или сървър, който е самостоятелен (не е част от HPC инфраструктура или поне инсталираните PGI компилаторите не се използват в нея), то няма проблеми да изберете директорията /opt/pgi, ако в нея има инсталирани стари версии на пакета. Възможно е да използвате тази локация на директорията дори, ако тя е част от мрежова файлова система (или е NFS експортирана). Ако се следват добрите практики по изграждането на софтуерни хранилища за HPC, тази директоря може да бъде и /usr/unite/pgi (или подобна), или напълно самостоятелна, избрана само за специфичната версия на пакета с компилаторите.

Инсталаторът ще инсталира Oracle Java (това не е OpenJDK). Ако считате, че ще е нужно да имате инсталирана Oracle Java, която да се използва от PGI компилаторите (когато това се налага), въведете accept и натиснете "Enter" (така ще приемете лицензното споразумение за инсталиране, използване и разпространение на Oracle Java):

Do you accept these terms? (accept,decline) accept

Следващата стъпка е много важна и тя ще бъде обяснена с пример. Имате инсталирана версия 19.4. Тя е създала символични връзки към инструментите и библиотеките в директория /opt/pgi/linux86-64/2019. Искате да направите така, че новата версия (примерно 19.5) да бъде инсталирана без да се налага да се премахва старата (19.4) и всички символични връзки в /opt/pgi/linux86-64/2019 да сочат към инструментите и библиотеките, доставени от новата. За да постигнете това, когато видите следното диалогово меню:

Do you wish to update/create links in the 2019 directory? (y/n)

въведете y и натиснете "Enter" за да актуализирате символичните връзки. Забележете, че така не се налага потребителите на системата, които в момента работят на нея, да презареждат променливите на средата (като PATH и LD_LIBRARY_PATH), само за да могат да използват последната версия на пакета с компилаторите. Ако са задали път към директория /opt/pgi/linux86-64/2019 в стойността на променливите, смяната на една версия 2019 с друга, няма да попречи на работата им.

Нататък, трябва да решите дали искате да инсталирате в системата Open MPI (специално компилиран за да поддържа код компилиран с PGI компилаторите):

Do you want to install Open MPI onto your system? (y/n)

Препоръчва се да го имате инсталиран. Що се отнася до NVidia GPU поддръжката:

Do you want to enable NVIDIA GPU support in Open MPI? (y/n)

инсталирайте я само, ако имате инсталиран съответния NVidia GPU хардуер.

Накрая, ще трябва да изберете типа на лицензирането. По подразбиране, ще бъде генериран ключ за използване на "community edition" и ще бъдете запитани дали искате да се свържете със сайта на PGI Group и да конфигурирате закупен преди това ключ за активация (това изисква да имате регистрация там, защото ще ви бъдат поискани име и парола). Въведете n, ако искате да продължите да използвате пакета като "community edition" и y, ако ще активирате лиценза на база на инсталиран в профила ви в портала на PGI Group активационен ключ:

************************************************************************
License Key Management
************************************************************************


NOTICE: A COMMUNITY 19.4 license key has been installed at:
            /opt/pgi/license.dat
        To use this license key, answer 'n' to the prompt below.

    If you have a Professional Edition (for-fee) license, answer 'y' to the
    prompt below to obtain your latest permanent license key and configure 
    a local license service.

    IMPORTANT: Professional Edition release 2019 (19.x) requires updated
               FlexNet v11.16.2.0 license service daemons included in this
               installation.

    A local license service is not required when using a separate license
    server on your network, or for Starter or Community license keys.
    If you already have a Starter license key you wish to use, place it in
    the file:  /opt/pgi/license.dat

    For more information, please see http://www.pgroup.com/license or the
    PGI Installation Guide for your platform at http://www.pgroup.com/docs.


Do you wish to obtain permanent license key or configure license service? (y/n)

След това укажете, че НЕ искате файловите в инсталационната директория да са само читаеми (това не е свързано с възможността да бъдат изтривани или презаписвани от непривилигерован потребител). За целта, след диалгога:

Do you want the files in the install directory to be read-only? (y/n)

въведете n и натиснете "Enter", с което ще завършите процеса на инсталация:

Installation complete.

 

5. Задаване на променливите на средата (PATH и LD_LIBRARY_PATH)

Има три начина, чрез които потребителите могат да достъпват директно последната или друга, инсталирана, версия на пакета с компилаторите:

  • скрипт в /etc/profile.d

    С този скрипт актуализирате променливите PATH и LD_LIBRARY_PATH за всички потребители в системата. Примерно съдържание на такъв скрипт (във файла /etc/profile.d/pgi.sh) е:

    export PATH=$PATH:/opt/pgi/linux86-64/2019/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/pgi/linux86-64/2019/lib

    Ще се наложи да смените точния път до директориите, когато това се налага (след инсталацията на нова версия на пакета с компилаторите, която вместо в директория 2019 е инсталирана в 2020 или другаде).

  • записи в ~/.bashrc или ~/.profile

    В този случай настройките са "per-user". Потребителите, които искат да направят подобни настройки, трябва да добавят следните два реда:

    export PATH=$PATH:/opt/pgi/linux86-64/2019/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/pgi/linux86-64/2019/lib

    в ~/.bashrc (RHEL/CentOS/Scientific Linux) или ~/.profile (Debian/Ubuntu). Ще се наложи да смените точния път до директориите, когато това се налага (след инсталацията на нова версия на пакета с компилаторите, която вместо в директория 2019 е инсталирана в 2020 или другаде).

  • използване на modules в HPC

    Виж документацията на пакета Environmental Modules.

 

6. Стартиране на процеса на лицензния демон lmgrd

Създайте група и потребител, с чиито права ще се изпълнява процеса на лицензния демон:

Трябва да прекопирате скрипта lmgrd.rc от инсталацията на PGI Compilers (ако сте инсталирали в /opt/pgi, този скрипт ще се намира в /opt/pgi/linux86-64/2019/bin/lmgrd.rc) в /etc/init.d:

$ sudo cp /opt/pgi/linux86-64/2019/bin/lmgrd.rc /etc/init.d

и да зададете права за изпълнение:

$ sudo chmod 755 /etc/init.d/lmgrd.lc

След това отворете файла и намерете следния ред:

FLEXLM_USER=

Редактирайте го така, че стойността на FLEXLM_USER да стане pgi:

FLEXLM_USER=pgi

Под него добавете реда:

chown -R $FLEXLM_USER /var/log/pgi

Намерете реда, който започва с LOG= и ги преправете на:

LOG=/var/log/pgi/flexlm.log

Създайте потребител pgi по следния начин (не задавайте парола за него):

$ sudo useradd pgi

след което създайте директория /var/log/pgi:

$ sudo mkdir /var/log/pgi

и направете така, че собственик на директорията да е потребител pgi от група pgi:

$ sudo chown pgi:pgi /var/log/pgi

Създайте файла /etc/logrotate.d/pgi и в него поставете следното съдържание:

/var/log/pgi/flexlm.log {
    missingok
    notifempty
    size 800k
    monthly
    compress
    copytruncate
    create 0600 pgi pgi
}

Последното се прави с цел избягване на създаването на много голям файл /var/log/pgi/flexlm.log, който да запълни файловата система на /var.

Накрая, задайте скрипта за изпълнение при зареждане на системата:

$ sudo chkconfig lmgrd.rc on

и го стартирайте:

$ sudo service lmgrd.rc start

При успешното си статиране, лицензионният демон lmgrd отваря порт 27000/tcp и слуша на него.

 


Последна актуализация: 19 септември 2019

2019 УНИТе, Веселин Колев