Компиляторы и основные библиотеки.
Краткое описание.
Б.И.Илюшкин
Семейство моделей
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 - вывод содержимого стандартной библиотеки С
(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 ]
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
Обе библиотеки
автоматически загружаются Fortran компилятором.
Для загрузки
их С компилятором необходимо использовать опции -lm
или -lM.
Пример
cc [опции] name.c -lm
Объявления некоторых
функций содержатся в файле
/usr/include/math.h
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 ;
обработка ошибок
Библиотеки содержат
откомпилированные коды подпрограмм, оптимизированных
для 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 директории.
Поддерживает
основные функции C , вызовы ОС и функции стандартного
пакета в/вывода.
Загружается
автоматически С компилятором. Объявления части
функций содержатся в файле
/usr/include/stdio.h
7. /usr/local/lib/gcc-lib/.../libgcc.a - GNU C runtime support library
При компиляции необходимо подключать Math libraries опцией -lm или -lM .
Пример
gcc [опции] name.c -lm
#include files
/opt/contrib/include/codelibs - directory for Codelibs #include files
СС компилятор
использует тот же самый оптимизатор и код генератор,
как С и Fortran компиляторы.
Это обеспечивает
частичную поддержку оптимизации. Общая модель оптимизации
с использованием pragmas
и
memory class нереализована
в С++.
9. /usr/local/lib/libg++.a - GNU C++ library
При компиляции требуется опция -lg++
Пример
g++ [опции] name.c -L/usr/local/lib
-lg++ -lm
При компиляции
для подключения библиотеки необходима опция +U77
(по умолчанию
действует +noU77)
Пример
f77 [опции] +U77 name.f
11. /opt/fortran/lib/libblas.a - Basic Linear Algebra Subroutines
Базовые (уровень
1) и расширенные (уровень 2,3) подпрограммы
матричных и векторных операций
нижнего уровня.
12. /opt/fortran/old/lib/libvec.a - Vector library
Различные операции
над векторами и матрицами.
При компиляции
для подключения библиотеки необходима опция -lvec
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.