Exemplar SPP 1600.

 Компиляторы и основные библиотеки.

     Краткое описание.

     Б.И.Илюшкин

  Семейство моделей Exemplar ( SPP 1200,1600,S-Class,X-Class серверы)
  поддерживает 4 основных языка программирования :

    Fortran 77 , Fortran90 , C , C++ .

 В ОС SPP-UX 5.x инсталлированы следующие версии компиляторов :

    f77     - HP Exemplar Fortran 77
    fort77  - HP POSIX Exemplar Fortran 77  - Поддерживает стандарт POSIX для UNIX. Некоторые опции
                                                                                                        отличаются    от  f77. Подробнее см.  man f77.
    f90     - HP Exemplar Fortran 90
           vf90          - HP Exemplar Translater Fortran 90 in Fortran 77
           cc     - HP Exemplar C
         c89     - HP POSIX Exemplar C  - Поддерживает стандарт POSIX для UNIX. Некоторые опции отличаются
                                                                                   от cc. Подробнее см. man  cc.
            CC          - HP Exemplar C++
            gcc          - GNU project C Compiler
    g++          - GNU project C++ Compiler

Более подробная информация в  manuals.
   Технология оптимизации новых версий компиляторов отличается от той, что  использовалась предыдущими
CONVEX компиляторами, поэтому результирующий  код заново откомпилированной программы может быть
отличным от прежних  вариантов.
    Библиотеки делятся на статические (archives libraries) и динамические (shared libraries - общедоступные).
Объектные коды функций  статических библиотек компонуются вместе с загрузочным модулем.Коды функций динамических библиотек не копируются в загрузочный модуль. Динамический загрузчик присоединяет их во
время выполнения.Использование динамических библиотек более эффективно. Подробнее см.  man ld .
Статические библиотеки имеют расширение .a , динамические .sl .Содержимое статической библиотеки можно
вывести командой  ar с опцией  t

    Пример

                ar t /usr/lib/libc.a  -  вывод содержимого стандартной библиотеки С

 Страницы manuals для библиотек.
 Страницы manuals описания библиотек находятся в разделе 3 MAN.
 Данный раздел логически делится на следующие секции :

    (3C)       - Standard C library
    (3C++)    - C++ libraries
    (3F)        - Fortran 77/90 libraries
    (3G)        - Graphics library
    (3I)         - Device I/O library
    (3M)        - Math libraries
    (3N)          - Internet network library
    (3S)         - Standard I/O package
    (3X),(3)   - Specialized libraries

 Страницы manuals расположены в следующих директориях :

           /usr/man/man3.Z
    /opt/ansic/share/man/man3.Z
    /opt/CC/share/man/man3.Z
    /opt/fortran/share/man/man3.Z
    /opt/fortran90/share/man/man3.Z
    /opt/mlib/share/man/man3.Z

 Каждое руководство имеет расширение,соответствующее имени секции.

        Пример

             /usr/man/man3.Z/atoi.3c - функция atoi из Standard C library
             /opt/fortran/share/man/man3.Z/access.3f - функция access из Fortran
                                                                                                                                        run time library
 
 Для вывода страниц manuals в общем случае необходимо указывать имя  секции вместе с именем функции
( если имя функции встречается в разных  секциях)

    Пример

       man 3f cps_info [ для cps_info.3f ]
  man 3 cps_info [ для cps_info.3 ]
 

 Общие библиотеки
 Общие библиотеки для C, C++, Fortran 77/90 находятся в каталоге   /usr/lib.  В их число входят следующие
 (основные) библиотеки.

 1. /usr/lib/libcps.sl - Compiler parallel support library

 Библиотека  CPSlib  управляет распараллеливанием с использованием интерфейсов нижнего и верхнего уровней. Поддерживает симметричную и асимметричные формы параллелизма.

 2. /usr/lib/libpthread.sl - POSIX threads library

             (Portable Operating System Interface for Computer Environment IEEE).

 3. /usr/lib/libcl.a  -  Language run time library
 

     Страницы manuals
             cps.3 - общее описание и состав CPSlib
             cps_info.3 - описание С функций CPSlib
             cps_info.3f - описание Fortran функций CPSlib
            info_thr.3 - описание Threads функций
     Документация
             Exemplar Programming Guide , Appendix D
 Математические библиотеки стандартных функций
 4. /usr/lib/libm.a - соответствует SVID стандарту
                                                           (System V Interface Definition , AT?T) 
         /usr/lib/libM.a - соответствует ANSIC,POSIX,XPG3 стандартам
                                                           (X Open Portability Guide) - XPG3

 Обе библиотеки автоматически загружаются Fortran компилятором.
 Для загрузки их С компилятором необходимо использовать опции -lm  или -lM.

        Пример

             cc [опции] name.c -lm

 Объявления некоторых функций содержатся в файле      /usr/include/math.h
 

     Страницы manuals
             /usr/man/man3.Z/*.3m
     Документация
             Fortran User's Guide , E , Runtime libraries
             C User's Guide , 7 , Runtime library , math.h
             HP-UX Reference , vol.2
 
 Список имен основных функций Math library :
     sin,cos,tan,asin,acos,atan ;                  тригонометрические
     sind,cosd, ..., ,... ; 
  sinf,cosf, ..., ,... ;

     sinh,cosh, ..., ,... ;                                                                                                 гиперболические

     exp,ldexp,log,log10,log2 ;                                                               логарифмические

     pow,sqrt,cbrt ;                                                                                                степенные

  hypot,fabs,cabs ;                                                                                           нормы

     ceil,floor,fmod,rint,copysign ;                преобразования

     scalb,logb,nextafter ;                         radix independent

     bessel,j0,j1,jn,y0,y1,yn,gamma,lgamma,signgam,erf ; специальные

     random,srandom,ininstate,setstate ;             генераторы псевдослучайных чисел

     isnan ;                                                                                                                         проверка явл-ся ли аргумент числом

     isinf ;                                         проверка явл-ся ли аргумент бесконечностью

     matherr ;                                                                                             обработка ошибок
 

 Библиотеки математических программ MLIB
 5. /opt/mlib/lib/pa1.1parallel/libveclib.a
   /opt/mlib/lib/pa1.1parallel/libscilib.a
         /opt/mlib/lib/pa1.1parallel/liblapack.a

 Библиотеки содержат откомпилированные коды подпрограмм, оптимизированных  для HP SPP архитектуры. Основными библиотеками являются VECLIB и LAPACK. Библиотека SCILIB предназначена для переносимости программ из  CRAY  компьютеров, использующих Scientific Library subroutines.
 Разделы библиотек описаны в manuals ( man veclib , man lapack ) и  документации.Подпрограммы библиотек предназначены для вызова из Fortran  программ, однако они могут вызываться и из С программ с соблюдением
 определенных соглашений.Подробнее об этом в HP MLIB VECLIB User's Guide,Appendix A.
 Для подключения библиотек в строке компиляции необходимо задать полный путь и подключить  CPSlib ( или   использовать опции   -Wl , -Ldir , где   dir  -  полный путь к каталогу ).

    Пример

     f77 [опции] name.f /opt/mlib/lib/pa1.1parallel/libveclib.a -lcps

 Для сокращения строки компиляции необходимо установить пути в
 переменной окружения LPATH

     setenv LPATH /usr/lib:/usr/ccs/lib:/opt/mlib/lib/pa1.1parallel

 Первые два директория в LPATH используются по умолчанию. Строка
 компиляции примет вид

     f77 [опции] name.f -lveclib -lcps

 Строку установки LPATH можно поместить в файл .login  home директории.

     Страницы manuals
     /opt/mlib/share/man/man3.Z/*.3m
     Документация
           /opt/mlib/newconfig/RelNotes
             HP MLIB Veclib User's Guide
             HP MLIB Veclib User's Guide
             HP MLIB Veclib User's Guide
 
 Отдельные библиотеки.
     C Libraries.
 6. /usr/lib/libc.a - Standard C Library

 Поддерживает основные функции C , вызовы ОС и функции стандартного  пакета в/вывода.
 Загружается автоматически  С  компилятором. Объявления части функций содержатся в файле   
  /usr/include/stdio.h

     Страницы manuals
    /usr/man/man3.Z/*.3c
 
     Документация
           C User's Guide , 7

 7. /usr/local/lib/gcc-lib/.../libgcc.a - GNU C runtime support  library

 При компиляции необходимо подключать Math libraries опцией -lm или -lM .

        Пример

     gcc [опции] name.c -lm
 

     Страницы manuals
    /usr/local/man/man3
  Документация
             gcc.1 - manual GNU C compiler
             /usr/local/gnu/info
          /usr/local/info/gcc.*
 
     C++ Libraries
 8. /usr/lib/libC.a - Standard C++ Library
         /usr/lib/libC.ansi.a - ANSI Standard C++ Library
          /opt/CC/lib/lib++.a - Standard Components library
          /opt/CC/lib/libcomplex.a - Complex math. library
   /opt/CC/lib/libtask.a - Task library
         /opt/CC/lib/libCxx.a - C++ support library
         /opt/CC/include/CC - directory for #include files
         /opt/CC/include/SC - directory for Standard Components

     #include files

             /opt/contrib/include/codelibs - directory for  Codelibs  #include files

     Страницы manuals
           /opt/CC/share/man/man3.Z/*.3
             CC.1             - Компилятор С++
             SC_tools_intro.1 - Введение в С++ tools and commands
             SC_intro.3       - Введение в секцию 3С++
             CPLX.INTRO.3     - Введение в Complex Math library
             TASK.INTRO.3     - Введение в Task library
             IOS.INTRO.3      - Введение в C++ Stream library
             codelibs.3x      - C++ Code re-use library

 СС компилятор использует тот же самый оптимизатор и код генератор,  как С и Fortran компиляторы.
 Это обеспечивает частичную поддержку оптимизации. Общая модель оптимизации с использованием pragmas
  и   memory class  нереализована в С++.

     Документация
         /opt/CC/newconfig/RelNotes - описание возможностей С++ версий
         /opt/CC/newconfig/TecDocs - описание шаблонов классов и т.д.
 
  Примеры
   /opt/CC/contrib/Examples
 /usr/contrib/codelibs/examples

 9. /usr/local/lib/libg++.a - GNU C++ library

 При компиляции требуется опция  -lg++

        Пример

             g++ [опции] name.c -L/usr/local/lib -lg++ -lm
 

     Страницы manuals
           g++.1 - GNU Project C++ Compiler
 
     Fortran libraries
 10. /opt/fortran/lib/libU77.a - Fortran run time library

 При компиляции для подключения библиотеки необходима опция +U77
 (по умолчанию действует +noU77)

        Пример

             f77 [опции] +U77 name.f
 

     Страницы manuals
             /opt/fortran/share/man/man3.Z/*.3f
             intro.3f -  Введение

 11. /opt/fortran/lib/libblas.a - Basic Linear Algebra Subroutines

 Базовые (уровень 1) и расширенные (уровень 2,3) подпрограммы  матричных и векторных операций
 нижнего уровня.

     Страницы manuals
     /opt/fortran/share/man/man3.Z/*.3x
     blas1.3x , blas2.3x - Введение

 12. /opt/fortran/old/lib/libvec.a - Vector library

 Различные операции над векторами и матрицами.
 При компиляции для подключения библиотеки необходима опция  -lvec

     Страницы manuals
             /opt/fortran/share/man/man3.Z/*.3x
    vec_intro.3x - Введение
     Документация
         /opt/fortran/newconfig/RelNotes
         Fortran User's Guide

 13. /opt/fortran90/lib/libU77.a - run time library Fortran 90

 При компиляции для подключения библиотеки необходима опция  +U77

 14. /opt/fortran90/lib/libblas.a - BLAS libraries

 15. /opt/fortran90/lib/libF90.a -  Fortfan 90 intrinsics
              /opt/fortran90/lib/libF90_parallel.a

 Для подключения библиотек параллельной поддержки CPSlib и Pthreads
 необходима опция  +parallel. Подробней в RelNotes и man f90.

     Страницы manuals
             /opt/fortran90/share/man/man3.Z
 
     Документация
             /opt/fortran90/newconfig/RelNotes
         f90.1