Лаборатория   информационных   технологий 


«Содержание»

IV. CC — вызов компилятора с языка С++

(полный путь: /opt/CC/bin/CC)

Cинтаксис:

CC [ options ] files

Подробную информацию о работе с компилятором можно получить с помощью команды man CC.

Файлы компилятора СС:

file.[cC]

C++ input file (other suffixes are also supported)

file.i

previously preprocessed C++ input file
file.o object file
file.sl shared library, created with -b
a.out linked executable output file
/var/tmp/* temporary files used by the compiler

/opt/langtools/lbin/cpp

compatibility preprocessor via -Ac
/opt/langtools/lbin/cpp.ansi ANSI preprocessor (default)
/usr/ccs/bin/as assembler, as(1)
/usr/ccs/bin/ld link editor, ld(1)
/opt/langtools/lbin/ucomp stand-alone code generator
/opt/langtools/lib/sched.models processor implementation file for +DA +DS
/opt/langtools/lib/crt0.o run-time start up routines
/opt/langtools/lib/mpcrt0.o run-time startup code for programs compiled for parallel execution

/opt/langtools/lib/gcrt0.o

start up for profiling via gprof(1) +G
/opt/langtools/lib/icrt0.o start up for Instrumentation via +I
Optional ANSI C product
/opt/ansic/bin/cc C compiler, cc(1) via +T
Non-C++ Libraries
/usr/lib/libc.a standard C library (archive version)
/usr/lib/libcps.sl compiler parallel support library
/usr/lib/libc.sl standard C library (shared version), see HP-UX Reference Section (3)

/usr/lib/libpthread.sl

POSIX threads library
/usr/lib/libp/libc.a C library for profiled programs (archive version) via -G
/usr/lib/libm.a Math Library
/usr/lib/libm.sl Math Library (shared version)

/usr/lib/libcl.a

Language run-time library

/usr/lib/libcl.sl

Language run-time library (shared version)

/usr/lib/libdld.sl

Dynamic loader library

C++ Files

/opt/CC/bin/CC C++ driver
/opt/CC/bin/c++filt C++ name filter tool, c++filt(1)
/opt/CC/bin/dem C++ name filter tool
/opt/CC/lbin/cfront compiler/translator
/opt/CC/lbin/c++merge C++ debug merge tool
/opt/CC/lbin/c++patch C++ patch tool

/opt/CC/lbin/c++ptcomp

C++ template type merge tool

/opt/CC/lbin/c++ptlink

C++ template instantiation processor

/opt/CC/include/CC

standard directory for C++ #include files
/opt/CC/include/SC directory for C++ SC (Standard Components) #include files

/usr/contrib/include/codelibs

directory for Codelibs #include files

/opt/CC/lib/nls/msg/$LANG/CC.cat

C++ compiler message catalog
/opt/CC/lib/nls/msg/$LANG/CC.msgs C++ compiler message catalog with CAUSE and ACTION
/opt/CC/lib/share/man C++ compiler, library and tools man pages

/opt/CC/lib/cxxshl.o

object file linked with +A
C++ Libraries

/usr/lib/libC.sl

standard C++ library (shared version)
/usr/lib/libC.a standard C++ library

/usr/lib/libC.ansi.sl

ANSI standard C++ library (shared version)

/usr/lib/libC.ansi.a

ANSI standard C++ library

/opt/CC/lib/lib++.a

Standard Components library

/opt/CC/lib/libcomplex.a

Complex library

/opt/CC/lib/libtask.a

Task library

/opt/CC/lib/libcxx.a

C++ support library

/opt/CC/lib/eh

+eh (exception handling) version of libraries

C++ Examples:

/opt/CC/contrib/Examples

/usr/contrib/codelibs/examples
C++ Online Documentation:
/opt/CC/newconfig/RelNotes/CXX.release.notes HP C++ Release Notes
/opt/CC/newconfig/TecDocs/templates.* HP C++ Templates Technical Addendum

/opt/CC/newconfig/TecDocs/tools.*

HP C++ Troubleshooting Notes

C++ Miscellaneous Tools:

/opt/CC/contrib/Tools

various tools described in HP C++ Troubleshooting Notes

«Содержание»

V. gcc, g++ - вызов GNU-компиляторов (v2.8.1) с языков С и С++

(полный путь: /usr/local/bin/gcc, /usr/local/bin/g++)

Синтаксис:

gcc [ option | filename ]...

g++ [ option | filename ]... или с++ [ option | filename ]...

Language Options

-ansi -fall-virtual -fcond-mismatch -fdollars-in-identifiers

-fenum-int-equiv -fexternal-templates -fno-asm -fno-builtin

-fno-strict-prototype -fsigned-bitfields -fsigned-char

-fthis-is-variable -funsigned-bitfields -funsigned-char

-fwritable-strings -traditional -traditional-cpp -trigraphs

Warning Options

-fsyntax-only -pedantic -pedantic-errors -w -W -Wall

-Waggregate-return -Wcast-align -Wcast-qual -Wchar-subscript

-Wcomment -Wconversion -Wenum-clash -Werror -Wformat

-Wid-clash-len -Wimplicit -Winline -Wmissing-prototypes

-Wnested-externs -Wno-import -Wparentheses -Wpointer-arith

-Wredundant-decls -Wreturn-type -Wshadow -Wstrict-prototypes

-Wswitch -Wtemplate-debugging -Wtraditional -Wtrigraphs

-Wuninitialized -Wunused -Wwrite-strings

Debugging Options

-a -dletters -fpretend-float -g -glevel -gcoff -gxcoff -gxcoff+

-gdwarf -gdwarf+ -gstabs -gstabs+ -ggdb -p -pg -save-temps

-print-libgcc-file-name

Optimization Options

-fcaller-saves -fcse-follow-jumps -fcse-skip-blocks

-fdelayed-branch -felide-constructors -fexpensive-optimizations

-ffast-math -ffloat-store -fforce-addr -fforce-mem

-finline-functions -fkeep-inline-functions -fmemoize-lookups

-fno-default-inline -fno-defer-pop -fno-function-cse -fno-inline

-fno-peephole -fomit-frame-pointer -frerun-cse-after-loop

-fschedule-insns -fschedule-insns2 -fstrength-reduce

-fthread-jumps -funroll-all-loops -funroll-loops -O -O2

Preprocessor Options

-Aassertion -C -dD -dM -dN -Dmacro[=defn] -E -H -idirafter dir

-include file -imacros file -iprefix file -iwithprefix dir -M -MD

-MM -MMD -nostdinc -P -Umacro -undef

Assembler Option

-Wa,option

Linker Options

-llibrary -nostartfiles -nostdlib -static -shared -symbolic

-Xlinker option -Wl,option -u symbol

Directory Options

-Bprefix -Idir -I- -Ldir

Target Options

-b machine -V version

Configuration Dependent Options

M680x0 Options

-m68000 -m68020 -m68020-40 -m68030 -m68040 -m68881 -mbitfield

-mc68000 -mc68020 -mfpa -mnobitfield -mrtd -mshort -msoft-float

VAX Options

-mg -mgnu -munix

SPARC Options

-mepilogue -mfpu -mhard-float -mno-fpu -mno-epilogue -msoft-float

-msparclite -mv8

Convex Options

-margcount -mc1 -mc2 -mnoargcount

AMD29K Options

-m29000 -m29050 -mbw -mdw -mkernel-registers -mlarge -mnbw -mnodw

-msmall -mstack-check -muser-registers

M88K Options

-m88000 -m88100 -m88110 -mbig-pic -mcheck-zero-division

-mhandle-large-shift -midentify-revision -mno-check-zero-division

-mno-ocs-debug-info -mno-ocs-frame-position

-mno-optimize-arg-area -mno-seriazlize-volatile -mno-underscores

-mocs-debug-info -mocs-frame-position -moptimize-arg-area

-mserialize-volatile -mshort-data-num -msvr3 -msvr4

-mtrap-large-shift -muse-div-instruction -mversion-03.00

-mwarn-passed-structs

RS6000 Options

-mfp-in-toc -mno-fop-in-toc

RT Options

-mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs

-mfull-fp-blocks -mhc-struct-return -min-line-mul

-mminimum-fp-blocks -mnohc-struct-return

MIPS Options

-mcpu=cpu type -mips2 -mips3 -mint64 -mlong64 -mlonglong128

-mmips-as -mgas -mrnames -mno-rnames -mgpopt -mno-gpopt -mstats

-mno-stats -mmemcpy -mno-memcpy -mno-mips-tfile -mmips-tfile

-msoft-float -mhard-float -mabicalls -mno-abicalls -mhalf-pic

-mno-half-pic -G num -nocpp

i386 Options

-m486 -mno-486 -msoft-float -mno-fp-ret-in-387

HPPA Options

-mpa-risc-1-0 -mpa-risc-1-1 -mkernel -mshared-libs

-mno-shared-libs -mlong-calls -mdisable-fpregs -mdisable-indexing

-mtrailing-colon

i960 Options

-mcpu-type -mnumerics -msoft-float -mleaf-procedures

-mno-leaf-procedures -mtail-call -mno-tail-call -mcomplex-addr

-mno-complex-addr -mcode-align -mno-code-align -mic-compat

-mic2.0-compat -mic3.0-compat -masm-compat -mintel-asm

-mstrict-align -mno-strict-align -mold-align -mno-old-align

DEC Alpha Options

-mfp-regs -mno-fp-regs -mno-soft-float -msoft-float

System V Options

-G -Qy -Qn -YP,paths -Ym,dir

Code Generation Options

-fcall-saved-reg -fcall-used-reg -ffixed-reg

-finhibit-size-directive -fnonnull-objects -fno-common -fno-ident

-fno-gnu-linker -fpcc-struct-return -fpic -fPIC

-freg-struct-returno -fshared-data -fshort-enums -fshort-double

-fvolatile -fvolatile-global -fverbose-asm

Значение некоторых опций:

-c

создать только объектный файл (.o)
-o file загрузочный файл помесить в file (по умолчанию a.out)
-ansi поддержка всех ANSI стандартов C программ
-fno-asm не распознавать asm, inline, typeof как ключевые слова
-fno-builtin не распознавать встроенные функции, начинающиеся не с двойным underscores (__)

-llibrary

использовать библиотеку liblibrary.a при загрузке
-static собрать библиотеку статически (для систем, поддерживающих динамическое соединение)

-shared 

собрать динамически разделяемую библиотеку
-Ldir добавить путь dir в список поиска библиотек по ключу -l
Файлы компилятора gcc, g++ :

file.c

C source file
file.h C header (preprocessor) file
file.i preprocessed C source file
file.C C++ source file
file.cc C++ source file
file.cxx C++ source file
file.m Objective-C source file

file.s

assembly language file
file.o object file
a.out link edited output
TMPDIR/cc* temporary files
LIBDIR/cpp preprocessor
LIBDIR/cc1 compiler for C
LIBDIR/cc1plus compiler for C++
LIBDIR/libgcc.a GCC subroutine library
LIBDIR/ccrt0 additional start-up routine for C++
/lib/libc.a standard C library, see
/usr/include standard directory for #include files
LIBDIR/include standard gcc directory for #include files
LIBDIR/g++-include additional g++ directory for #include
На SPP-2000 LIBDIR — это
/usr/local/lib/gcc-lib/hppa1.1-hp-hpux10.01/2.8.1

TMPDIR comes from the environment variable TMPDIR

(default /usr/tmp if available, else /tmp).

«Содержание»

  1. Vast90 является препроцессором, переводящим исходный код на Fortran'e90 в код на Fortran'e77, после чего компилируется код на Fortran'e77

f90 — компиляция программы на языке Fortran90.

Синтаксис:

f90 [90_option] ... [f77_option] ...

[-Wv,v_option [,v_option]...] [files]

f90_option — опции F90:

-c,-dryrun, -l suffix, -Wl,-Ldir,-oname,

-v,-v0,-nm,-Wv, -Yvc,path ,-Yvv,path

f77_option - опции HP f77:

+B,-es, -In, -onetrip,-Rn,-V , -tc,name

v_option — опции vf90 (кроме -o), передаются через -Wv

Значение некоторых опций:

-c

создать только объектный файл
-l suffix подключить библиотеку libsuffix.a
-Wl,-Ldir приоритетное подключение библиотек из директории dir
-oname присвоить имя исполняемому модулю name (по умолчанию — a.out)
Примеры:

f90 -Wl,-L/opt/vast90/lib file2.f90

— вызывается транслятор vf90, из file2.f90 создается выполнимый файл a.out, подключаются библиотеки директории /opt/vast90/lib
Компилятором f90 распознаются следующие файлы:

file.f90

free-format Fortran 90 source file
file.f fixed-format Fortran 90 source file
file.m Fortran 90 module file
file.o object file
file.s assembly language file
Vfile.f . intermediate file produced after pass vf90. Contains
preprocessed Fortran 77 source code

a.out

link-edited output file
TMPDIR/* temporary files
/opt/fortran/bin/f77 Fortran 77 compiler

С помощью команды vf90 можно получить из текста своей Fortran-90-программы текст программы на Fortran'e77, что бывает полезно, если Вы собираетесь распараллеливать свою программу (для f90 опций распараллеливания нет).

«Содержание»

VII. Математические библиотеки

Специально оптимизированные для платформы SPP-UX математические библиотеки VECLIB, LAPACK, SCLIB находятся в директориях

/opt/mlib/lib/pa2.0/...

Подробную информацию о работе с этими библиотеками на SPP содержится в

/opt/mlib/newconfig/RelNotes

На SPP-2000 поставлен reduce версии 3.6. Полный путь

/usr/local/bin/reduce

VIII. CERNLIB на SPP-2000

На SPP-2000 доступны для использования следующие версии программного обеспечения CERNLIB:

1. CERNLIB-97a

Режимы компиляции библиотек следующие:

fort77 -c -O +ppu +B -DCERNLIB_HPUX -DCERNLIB_UNIX

/opt/ansic/bin/cc -c +O1 -Dhpux -DSYSV -D_HPUX_SOURCE

-D__hpux -DCERNLIB_HPUX -DCERNLIB_UNIX

Для работы с CERNLIB-97a необходимо настроить среду следующим образом:

Для bash:

export CERN=/scr/s05a/cern

export PATH=$PATH:$CERN/old/bin

Для tcsh:

setenv CERN=/scr/s05a/cern

setenv PATH=$PATH:$CERN/old/bin

2. CERNLIB-2000

Режимы компиляции библиотек следующие:

fort77 +O2 +ppu +B +Z +DA1.1 -DCERNLIB_HPUX -DCERNLIB_UNIX

cc +O1 -Aa +Z +DA1.1 -Dhpux DSYSV -D__hpux -D_HPUX_SOURCE

-DCERNLIB_HPUX -DCERNLIB_UNIX

Для работы с CERNLIB-2000 необходимо настроить среду следующим образом:

Для bash:

export CERN=/scr/s05a/cern

export PATH=$PATH:$CERN/pro/bin

Для tcsh:

setenv CERN=/scr/s05a/cern

setenv PATH=$PATH:$CERN/pro/bin

!! Предпочтительно использовать версию CERNLIB-2000 !!

IX. Некоторые полезные рекомендации:

Полезной опцией компиляции является опция -С, которая осуществляет проверку границ массивов.

Для возможности использовать отладчик CXdb следует транслировать программу с опцией -g. Вызов отладчика:

cxdb (полный путь: /opt/cxdb/bin/cxdb).

Возможны следующие уровни оптимизации программы:

+О0 +О1 +О2 +О3 +О4 +Оall

Распараллеливание программы возможно от уровня оптимизации +О3 при использовании опции +Oparallel.

Информацию о процессе оптимизации программы можно получить с помощью опций компиляции +Oreport и +Oinfo .

Программное средство Cxpa (Performance Analyzer) позволяет получить подробную информацию об эффективности распараллеливания Вашей программы. Программу, предварительно скомпилированную с опцией +pa, следует запустить на выполнение с помощью cxpa.

Тихоненко Е.Т., eat@cv.jinr.ru,
Громова Н.И grom@cv.jinr.ru

«Содержание»

3.2. Как эффективно использовать суперкомпьютер SPP-2000:cредства распараллеливания программ

Летом 1998 года в ЛВТА появился 8-процессорный компьютер SPP-2000 производства фирмы Hewlett-Packard. Однако обычные наши фортранные программы не в состоянии использовать одновременно более одного его процессора. Настоящий опус и призван показать, как можно это сделать, используя инструментальный пакет MPI, входящий в состав программного обеспечения SPP-2000.

Начнем с так называемого закона Амдаля.

Пусть 0 <= S <= 1 — доля вычислительных операций Вашей программы, которые должны совершаться сугубо последовательно. Тогда при одновременном использовании P процессоров Вы можете ускорить свою программу максимум в K = 1 / (+ (1 - S) / P) раз.

В частности, если S = 0.1 то K < 10 при любом P. Если же S = 0 (чего в природе, вообще говоря, не наблюдается), то K = P. Напомним, что у нас P = 8 и в ближайшее время вряд ли увеличится. Так что решайте сами — окупятся Ваши труды, или нет! Впрочем, пакет MPI позволяет распараллеливать программу для выполнения на любом количестве разнотипных компьютеров, соединенных сетью EtherNet. Тех, кто хочет получить более подробную информацию о распараллеливании вычислений или подробное описание пакета MPI, мы отсылаем к специализированному серверу МГУ:

http://parallel.srcc.msu.su

Наиболее доступным примером, пожалуй, является программа умножения матриц, где все элементы матрицы-произведения можно вычислять параллельно, т.е. S = 0.

Вот «нераспараллеленный» вариант:

program mumu ! matrix multiplication
parameter (N=400) ! matrix dimension
real*8 A(N,N),B(N,N),C(N,N)
real*8 t
C.... мы опустили формирование исходных матриц А и В
do i=1,N
do j=1,N
t=0.0
do k=1,N
t=t+A(i,k)*B(k,j)
enddo
C(i,j)=t
enddo
enddo
end

Теперь попытаемся проделать эту же работу коллективом из нескольких процессов. Процессы, пронумерованные от 0 до P - 1, исполняют один и тот же программный код, используя независимо работающие процессоры. Процесс 0 распределяет работу между всеми исполнителями, пересылая им обе исходные матрицы А и В. Каждый исполнитель (в том числе и сам процесс 0) вычисляет «свои» столбцы матрицы С, после чего пересылает результат своей работы обратно процессу 0.

program mumu ! matrix multiplication (parallel version)
parameter (N=400) ! matrix dimension
include 'mpif.h' ! здесь описаны нужные нам MPI-обьекты
integer status(MPI_STATUS_SIZE) ! важно сказать, что это массив !
integer comm,typ,tag,ierr,myProcess,P
data tag/0/, typ/MPI_DOUBLE_PRECISION/, comm/MPI_COMM_WORLD/
real*8 A(N,N),B(N,N),C(N,N)
real*8 t
 
C... инициализация MPI : запрос номера "своего" процесса
 
call MPI_Init(ierr)
call MPI_Comm_rank(comm,myProcess,ierr) ! кто я ?
call MPI_Comm_size(comm,P,ierr) ! сколько всего нас ?
 
nc=N/P ! какие столбцы матрицы С должен я посчитать?
nrest=mod(N,P) ! (а надо поделить их приблизительно поровну)
 
if(myProcess.lt.nrest) then
nc1=1+(nc+1)*myProcess ! это номер первого столбца
nc2=nc1+nc ! а это номер последнего
else
nc1=1+(nc+1)*nrest+nc*(myProcess-nrest)
nc2=nc1+nc-1
endif
write(*,*) ' Process',myProcess,' of',P,
- ' started for columns from ',nc1,' till ',nc2
C... Процесс 0 рассылает остальным обе исходные матрицы
C.... ( мы опустили их формирование )
if (myProcess.eq.0) then
do i=1,P-1
call MPI_Send(A,N*N,typ,i,tag,comm,ierr)
call MPI_Send(B,N*N,typ,i,tag,comm,ierr)
enddo
else
call MPI_Recv(A,N*N,typ,0,tag,comm,status,ierr)
call MPI_Recv(B,N*N,typ,0,tag,comm,status,ierr)
endif
C--- Все начали работать ...
do i=1,N
do j=nc1,nc2 ! каждый вычисляет только свою часть матрицы С
t=0.0
do k=1,N
t=t+A(i,k)*B(k,j)
enddo
C(i,j)=t
enddo
enddo
enddo
C--- об'единяем результаты в памяти процесса 0
C (поскольку матрицы хранятся в памяти по столбцам,
C подряд идущие столбцы можно пересылать за одно обращение!)
if(myProcess.eq.0) then
do i=1,P-1 ! 0-й процесс обращается ко всем остальным
if(i.lt.nrest) then
nc1=1+(nc+1)*i ! надо вспомнить - кто какие столбцы считал
k=nc+1
else
nc1=1+(nc+1)*nrest+nc*(i-nrest)
k=nc
endif
call MPI_Recv(С(1,nc1),N*k,typ,i,tag,comm,status,ierr)
enddo
else ! а ненулевые процессы это знают
call MPI_Send(C(1,nc1),N*(nc2-nc1+1),typ,0,tag,comm,ierr)
endif
 
write(*,*) ' Process',myProcess,' finished.'
call MPI_Finalize(ierr) ! Ну, все...

end

Как заставить работать это произведение?

Во-первых, Вы должны получить доступ к пакету MPI. Для этого надо дополнить свои переменные окружения PATH и MANPATH:

setenv PATH /opt/mpi/bin:$PATH

setenv MANPATH /opt/mpi/share/man:$MANPATH

Добавьте это заклинание к своему .login-файлу.

Во-вторых, вместо транслятора f77 вызывайте mpif77:

mpif77 example.f -o primer

В-третьих, при запуске программы указывайте, на сколько процессов Вы хотите ее распараллелить:

primer -np 3 — в данном случае на три.

Если вызовете без параметров — будет работать в одиночку. Кстати — ничто не мешает Вам указывать число процессов большее, чем количество имеющихся в наличии процессоров! Просто Ваши процессы будут простаивать в очереди к процессорам, напрасно расходуя ресурсы системы.

Мои эксперименты с этой программой при N = 400 и разным числом процессов P показали, что при всех 1 < P < 6 работа выполняется в P раз быстрее, чем в однопроцессном варианте. При P > 5 уменьшения времени уже нет, наоборот — процессы начинают «толкаться» в памяти компьютера.

Действительно, в этой программе не требуется межпроцессных коммуникаций во время счета, обмен информацией требуется только в начале и в конце работы. Поэтому, пока системе хватает ресурсов памяти, ускорение и должно линейно зависеть от числа процессов (три землекопа выкопают ту же самую яму втрое быстрее, чем один). Если же все землекопы сразу в одну яму не поместятся — они будут только мешать друг другу!

Итак, мы видим, что даже в простейших случаях распараллеливание программы требует изрядных усилий. Более того, в ходе вычислений как правило необходимы межпроцессные коммуникации, которые могут вообще «съесть» весь эффект от распараллеливания. Здесь все зависит от соотношения цены программы и стоимости Вашего труда:

* Если программа легко распараллеливается — почему бы не сделать это?

* Если программа не очень нужная — стоит ли мучиться?

* Если программа просто незаменима — может быть стоит потрудиться?

Еще одно замечание. Интуиция подсказывает, что достаточно легко могут быть распараллелены так называемые Монте-Карловские программы, где вычислительной обработке подвергаются независимые события, сгенерированные с помощью датчика случайных чисел. Здесь важно обеспечить, чтобы каждый из параллельно работающих процессов получал свою, независимую от остальных процессов, серию случайных чисел. Для этого каждый из процессов, начиная свою работу, должен как-то по-своему инициализировать датчик.

На наш взгляд, идеальным датчиком для использования в распараллеленной программе является датчик, предложенный G.Marsaglia, способный выдавать до 32000 независимых серий равномерно распределенной на [0, 1] случайной величины. Лучше всего инициализировать серию номером своего процессора:

...

call MPI_Comm_rank(comm,myProcess,ierr) ! кто я ?
call RandomInitiate(myProcess,myProcess) ! начинаем свою серию

...

Датчик входит в состав нашей библиотеки JINRLIB. Немаловажным обстоятельством является то, что это самый быстрый из известных нам датчиков: всего 5 сложений и ни одного умножения с плавающей запятой!

И последнее: использование пакета MPI вовсе не уменьшит мобильность Вашей программы. На машинах, где нет MPI, Вы можете использовать заглушку:

файл mpif.h :

parameter(MPI_COMM_WORLD=0)
parameter(MPI_DOUBLE_PRECISION=0)
parameter(MPI_STATUS_SIZE=10)

файл mpi.for :

subroutine MPI_Comm_rank(comm,myProcess,ierr)
myProcess=0 ! наш процесс имеет номер 0
return
subroutine MPI_Comm_size(comm,nProcs,ierr)
nProcs=1 ! и он единственный

return
... ! все остальные "MPI-программы" —— пустые !!!

Применение этой заглушки позволит запускать Вашу программу в однопроцессном режиме, не меняя ее текста.

Полезные ссылки:

http://www.ccas.ru,   http://parallel.srcc.msu.su,   http://www.csa.ru/CSA/

Сапожников А. П., sap@cv.jinr.ru

«Содержание»

3.3. Список имеющейся документации по программному обеспечению для пользователей SPP-2000 (в том числе трансляторам, отладчикам и математическим библиотекам LAPACK, SCILIB, VECLIB, RN)*

I. Общие сведения

1. EXEMPLAR ARCHITECTURE Ref. S/X V1.0 (A4716-90001)

2. EXEMPLAR Progr.Guide S/X CLS V1.0 (B5600-90001)

4. CHECKPOINT/RESTART User Guide V3.0 (B5655-90027)

II. Трансляторы

1. EXEMPLAR C and F77 Progr. Guide V1.0 (B5600-90002)

2. HP FORTRAN/9000 Progr. Guide (B3906-90001)

3. HP FORTRAN/9000 Progr. Ref. (B3906-90002)

4. VAST90 User Guide V3.0 (B5610-90001 )

5. HP C Progr. Guide (92434-90002)

6. EXEMPLAR C RN V1.2.1 (B5620-90002)

7. EXEMPLAR C++ Progr. Guide V3.0 (B5630-90001)

8. HP C++ Progr. Guide (92501-90005)

9. HP C++ Quick Ref. (B1637-90001)

III. Средства отладки и анализа программ

1. CXDB (Debugger) Quick Ref. V5.0 (B5639-90007)

2. CXPA (Performance Analyzer) REF V3.0 (B5639-90002)

3. CXTRACE User Guide (B5639-90003)

IV. Математические библиотеки

1. HP MLIB LAPACK User Guide V4.0 (B5649-90005)

2. HP MLIB SCILIB User Guide V3.0 (B5649-90006)

3. HP MLIB VECLIB User Guide V3.0 (B5649-90007)

4. HP MLIB RN V5.0 (B5649-90009)

V. Работа в batch-режиме

1. NQS+ User Guide V4.0 (B5589-90009)

2. NQS+ User Quick Ref. V3.0 (B5589-90007)

VI. MPI - Message Passing Interface

1. HP MPI User Guide V1.0 (B6011-90001)

2. HP MPI Reference (3P) (B6011-90003)

3.4. Запуск счетных задач на SPP-2000

После отладки в интерактивном режиме счет задач производится только в batch-режиме. Установлено ограничение на одновременный счет только 2-х задач для отдельного пользователя (т.е. отправить на счет в batch-систему можно любое число задач, но одновременно выполняться будет не более 2-х задач одного пользователя). Ограничения на время выполнения задачи нет.

Имеется только одна batch-очередь: long. Запуск задачи осуществляется обычным образом:

qsub -q l your_script_file

Настоятельная рекомендация при запуске использовать опцию «контрольной точки» -cp, например:

qsub -q l -cp 2 Hours your_script_file

«Содержание»

4. Специализированная PC-ферма ЛИТ

1. Для чего была задумана ферма

С середины 2000 года в ЛИТ работает ферма или кластер, созданная на базе архитектуры Intel ia32 и ОС Linux. Подобные вычислительные установки уже лет 5 эксплуатируются в мире, и весьма успешно используются в физике высоких энергий. Но именно в последние 2—3 года комбинация ia32/linux успешно вытесняет большие машины (main frame) в областях с огромными объёмами вычислений: моделирование работы установок на ускорителях, обработка данных с таких установок, что особенно актуально для коллабораций с участием ОИЯИ.

Наша ферма, или её ещё можно назвать кластером, уже используется для отработки программного обеспечения в нескольких коллаборациях ОИЯИ с CERN: ALICE, CMS, COMPASS.

2. Конфигурация фермы

Аппаратная конфигурация фермы следующая.

1 сервер:

- Dual Pentium-III 600MHz, 512Mb RAM;

- 8Gb SCSI disk, 20Gb SCSI tape;

- Mylex eXtremeRAID 1100 h/w RAID-5 170Gb, реальная ёмкость около 120Gb;

- 2 Intel Ether express Ethernet 100BaseT.

8 вычислительных узлов:

- Dual Pentium-III 500MHz, 512Mb RAM;

- 8Gb SCSI disk;

- Intel Ether express Ethernet 100BaseT.

2 переключателя по 4 порта на монитор, клавиатуру, мышь, что позволило обойтись только тремя комплектами монитора, клавиатуры и мыши для всей фермы.

Ethernet 100BaseT switch на 8 портов и Ethernet 100BaseT hub на 16 портов.

UPS для бесперебойного питания сервера.

Программная среда.

- ОС SuSE Linux 6.4 для сервера;

- ОС Linux RedHat 6.1 в конфигурации CERN'а для вычислительных узлов;

- на обе ОС было установлено ядро linux 2.2.16, изменённое для работы с LVM и NFSv3;

- ASIS, включающий большинство программных пакетов сертифицированных CERN для ОС Linux;

- система пакетной обработки PBS;

- CERNLIB 2000;

- обновлены многие системные утилиты до последних версий;

- Globus toolkit;

На ферме установлено также специфическое программное обеспечение для поддержки работы коллабораций.

- LHC++ включая Objectivity/DB;

- cmsim и ORCA;

- Root и Aliroot.

3. Некоторые особенности реализации

Физически машины соединены друг с другом по протоколу Ethernet 100BaseTX через один HUB. Серверная машина одним своим Ethernet адаптером подсоединена к тому же HUB, а вторым к общему сегменту локальной сети ОИЯИ. Внутренняя подсеть имеет IP адреса, отличные от основной опорной сети ОИЯИ, что в существующих условиях позволило убрать паразитный трафик с внутренней подсети и обеспечить достаточную пропускную способность для NFS.

Машины объединены в кластер общими Home и Scratch директориями, директорией /usr/local, включающей ASIS продукты и дополнительные утилиты. Таким образом мы имеем возможность использовать хорошо защищённый от сбоев сервер с RAID-5 и UPS для хранения наиболее важных данных, и иметь к ним доступ с вычислительных узлов по высокопроизводительному протоколу NFSv3. LVM позволяет делить диск на партиции и изменять их размер динамически и независимо друг от друга, чем мы уже неоднократно воспользовались.

Система пакетной обработки (batch) PBS отличается надёжностью в работе и большой гибкостью. Сервер этой системы вместе с планировщиком установлен на серверной машине. На каждом вычислительном узле фермы установлен только исполнитель задач PBS. Такая структура PBS позволяет проводить удаление или подключение узлов без остановки системы, и всё это с продолжением работы уже запущенных или даже только стоящих в очередях на запуск задач. PBS распространяется в настоящий момент в двух видах: свободно распространяемой версии — OpenPBS, и продаваемой — PBS-Pro. Мы, естественно, использовали первую, и вполне довольны всеми её качествами. Отметим также, что PBS вполне совместима c AFS и Globus Toolkit.

На серверной машине, на которую получена официальная регистрация в globus.org, установлен Globus Toolkit. Эта машина также является официальным GIIS сервером ОИЯИ в рамках проекта EU Data Grid, предусматривающего глобальное объединение вычислительных ресурсов. В качестве одного из планируемых результатов этого проекта будет объединение ресурсов для обработки результатов работы установок на ускорителе LHC в CERN. В ближайшее время планируется проведение тестов по этому проекту и мы полностью готовы к совместным работам с другими участниками, как в России, так и в других странах Европы.

«Содержание»

4. Специфика работы пользователей на ферме

В настоящее время на нашей ферме работают участники коллабораций ALICE, CMS, COMPASS, D0.

Каждый пользователь имеет квоту на Home партиции и на двух Scratch партициях. Кроме этого, каждая коллаборация имеет на нашей ферме отдельную партицию для установки своего специфического программного обеспечения. Мы не используем NIS, но имеем абсолютно одинаковое окружение для пользователей на всех вычислительных узлах фермы. Естественно, сервер является исключением, и на нем пользователям запрещено работать в интерактивном режиме, или запускать какие-то ещё задания, кроме перекачки файлов.

Хотя в обычном режиме эксплуатации все вычислительные узлы совершенно равноправны, но один является как бы образцом для остальных. С этого узла при помощи rsync происходит обновление окружения 2 раза в час. Видимо интуитивно наши пользователи работают в интерактивном режиме почти исключительно на этом узле.

Пока мы настоятельно призываем наших пользователей добровольно запускать свои задачи только в режиме batch. К сожалению, некоторые из них игнорируют наши призывы. Уже в ближайшее время мы предпримем меры борьбы с такими пользователями, установив специальную утилиту, которая будет достаточно быстро понижать приоритет задач, запущенных не через batch, а через некоторое время (10—15 минут работы CPU) и останавливать их совсем.

Поскольку наша ферма является специализированной и предназначена для обслуживания запросов коллабораций физики высоких энергий, то регистрация пользователей производится только по запросу от представителей коллабораций в ОИЯИ. Далее назначается ответственный по этой коллаборации на ферме. Мы регистрируем пользователей сами, как правило, сами устанавливаем специфическое ПО, сами производим изменения настроек ОС. Но, как правило, все обращения по поводу работы с фермой должны поступать от ответственных по коллаборациям. Самая первая причина этих требований — мы не можем физически вникнуть во всю специфику программного окружения всех коллабораций, работающих на нашей ферме.

Мы уже применяли и скорее всего будем применять специальный режим работы фермы. Он заключается в жёстком ограничении работы пользователей только на одном узле. Это связано с периодами массовой генерации или обработки данных в какой-то из коллабораций с повышенными требованиями в вычислительным ресурсам. На это, заранее оговоренное время, мы, предупредив всех, устанавливаем на остальных узлах урезанную версию файла паролей. В принципе, возможен и режим деления вычислительных узлов между несколькими коллаборациями, производящими массовый счёт с перекрытием во времени. Мы уже провели 2 периода массового счёта для CMS.

5. Попытка сделать некоторые выводы и рекомендации

Видимо, аппаратное решение выбрано довольно удачно.

Система надёжна в эксплуатации, в этом помогают аппаратный RAID-5 на сервере с общими директориями всех пользователей, UPS, простые, но надёжные Ethernet switch и hub.

Система близка к оптимальным параметрам по критериям надёжности, производительности, лёгкости модификации и цены. Этому способствуют: отказ от монтируемых в стойку исполнений, уменьшение количества мониторов, выбор двух-, а не однопроцессорных машин.

Установка в ядро linux LVM и NFSv3 вполне оправдана достигнутыми преимуществами в удобстве перенастройки и в скоростях обмена данными.

Однако в аппаратной конфигурации есть некоторые недостатки. Наличие переключателей монитора, клавиатуры и мыши для 4-х машин приводит к необходимости только последовательной загрузки. Правильно было бы иметь только один монитор — на сервере, подключив все остальные узлы через серийный мультиплексор. Именно так комплектуются фермы с Linux, поставляемые фирмами SuSE и VALinux.

В настоящее время большое распространение получают аппаратные RAID контролеры с IDE дисками. Ёмкость IDE дисков даже превосходит ёмкость SCSI дисков, а по цене IDE исполнение существенно дешевле, чем SCSI. Даже несмотря на некоторую потерю в скорости доступа, такие контролеры видимо наиболее подходят для построения фермы средних размеров с единым дисковым пространством.

Вариант подключения фермы к локальной сети через сервер также не является оптимальным. К сожалению, в локальной сети ОИЯИ, с её неверной конфигурацией опорной сети (имеется в виду маска опорной сети 255.255.240.0), других вариантов избавления от паразитного трафика на подсети фермы нет.

Мицын В.В., vvm@cv.jinr.ru

«Содержание»

5. APE/Quadrics в ОИЯИ

Семейство компьютеров APE/Quadrics — это массивно-параллельные вычислительные системы с архитектурой SIMD (Single Instruction, Multiple Data), где каждый процессорный элемент синхронно выполняет одну и ту же программу со своим комплектом локальных данных. Процессоры образуют 3-мерный тор, в котором каждый узел имеет непосредственный доступ к памяти 6 своих соседей.

Проект APE разработан и развивается группой итальянских физиков-теоретиков из института INFN (www.infn.it), специализирующихся в области квантовой хромодинамики. последние 5—7 лет в проекте активно участвует немецкий институт DESY (www.ifh.de).

Первым практическим результатом проекта явилась разработка вычислительной системы APE-100, включающей до 2048 специализированных 32-разрядных процессоров с пиковой производительностью каждого 50 Mflops, а всей вычислительной системы — до 100 Gflops. Вся система обслуживается front-end машиной, в качестве которой выступает SUN SPARC Station, работающая под управлением OC UNIX. Серийное производство APE-100 осуществляется фирмой Quadrics с 1993 года.

Основным языком программирования в APE-100 является язык высокого уровня TAO с фортраноподобным синтаксисом и встроенными средствами поддержки параллельной архитектуры машины.

К настоящему времени APE-100 успешно эксплуатируется в Италии, Великобритании и Германии. В 2000 году 32-процессорный комплект (конфигурация 8 ?  2 ?  2) установлен в ОИЯИ. Сетевой адрес front-end машины APE-100 159.93.25.62.

Дополнительную информацию можно найти на странице

www.jinr.ru/~tsap/Koi/ape/ape.htm

По вопросам регистрации пользователей на APE-100 обращаться к

Степаненко В. А. (vstep@jinr.ru),

Сапожникову А. П.(sap@cv.jinr.ru) или

Рихвицкому В. С. (rqvtsk@cv.jinr.ru).

Сапожникова Т. Ф., tsap@cv.jinr.ru

«Содержание»

6. Обеспечение хранения данных с использованием автоматизированной ленточной библиотеки — робота ATL

Система, которая обеспечивает резервное копирование информации, состоит из сервера НР D-370/2, сопряжённого с роботом ATL 2460. Ёмкость системы 10 Тбайт. Её назначение — создание резервных копий файлов и восстановление, в случае потери, информации, размещённой на дисках. Это необходимо, т.к. результаты многомесячного, в отдельных случаях, счёта не должны быть потеряны. Используется программная система OMNIBACK II. Работа с OMNIBACK требует системных привилегий, поэтому обращение пользователей к программе не предусмотрено. Тем не менее, полезно знать какая информация сохраняется, как часто создаются копии и как долго они хранятся, а также некоторые особенности работы программы.

Процесс создания копий планируется, а затем производится автоматический запуск программ чтения информации с диска (дисковый агент) и записи её на ленту (ленточный агент). Чтобы уменьшить объём сохраняемых копий, используется принцип сочетания полного и частичного копирования. При полном копировании копия некоторого объёма информации создаётся относительно редко. При частичном копировании, которое производится в промежутках между полным копированием, сохраняется только та информация, которая изменилась со времени последнего копирования. Полные копии файлов создаются еженедельно. Копии второго уровня (только изменившихся файлов) создаются ежедневно. Срок хранения копии — 8 недель, для отдельных типов файлов этот срок может быть изменён. Таким образом, можно восстановить состояние файлов «с точностью до 24 часов».

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

Ниже перечислены имена компьютеров из jinr.ru, для которых производится сохранение информации:

CV, BCV — это компьютеры CONVEX, на которых зарегистрировано большинство пользователей ЛИТ;

LIB — компьютер научно-технической библиотеки ОИЯИ;

DBS (dbserv) — сервер баз данных; а также

DECIMAL, DTS, SUNCT2, ULTRA.

Кроме того, резервное копирование всех mailbox производится раз в день в 9 часов утра.

Всего в данный момент в системе хранится резервная информация с дисков общим объёмом около 500 Gb.

Возможно, что-то из этого объёма может Вам пригодится.

Трофимов В. В., trofimov@cv.jinr.ru

«Содержание»

7. Библиотеки программ для разных платформ

7.1. Положение о JINRLIB — библиотеке программ ОИЯИ

JINRLIB — библиотека программ, предназначенных для решения широкого круга математических и физических проблем, возникающих в ходе научной деятельности сотрудников ОИЯИ.

Цели проекта:

1. Обеспечить долговременную и стабильную поддержку пользователей компьютеров всех типов, существующих в ОИЯИ;

2. Обеспечить сохранение результатов труда старшего поколения специалистов по численным методам;

3. Создать у сотрудников ОИЯИ стимул для разработки собственных программ.

Состав библиотеки:

Основу библиотеки составляют программы из MATHLIB и KERNLIB — ядра программного обеспечения ЦЕРН, и LIBDUBNA — популярной в прошлом библиотеки программ.

Пополнение библиотеки будет происходить

a) новыми программами, создаваемыми сотрудниками ОИЯИ и их коллаборантами;

б) программами, легально приобретаемыми «на стороне» и адаптированными для нужд ОИЯИ.

Принципы организации и технология сопровождения:

1. Библиотека — это коллекция программ. Каждая программа идентифицируется уникальным индексом. Для индексирования используется привычная нашим пользователям классификация, принятая в свое время в LIBDUBNA.

2. Библиотечная программа — это реально существующая программа, пригодная для компиляции на компьютерах различных типов и последующего включения в библиотеки объектных модулей, предоставляемые пользователям.

Программа — это совокупность не более чем 3 компонентов:

2.1. Исходный текст. Это файл, содержащий тексты всех подпрограмм библиотечной программы. Обязательный компонент.

2.2. Описание программы. Обязательный компонент. Приветствуется предоставление описания программы на обоих языках, русском и английском. При необходимости сотрудники библиотечной группы ЛИТ берут на себя труд по переводу описания с одного из этих языков на другой.

2.3. Тестирующая программа. Кроме того, здесь могут понадобиться файлы, содержащие исходные данные для теста и результаты эталонного прогона. Крайне желательный компонент.

3. Все программы работают только с 64-разрядным представлением чисел с плавающей запятой. Использование в программе конкретных особенностей машинного представления чисел допускается только в исключительных случаях. Для Фортрана: каждая подпрограмма должна содержать строку

IMPLICIT REAL*8 (A-H, O-Z)

Для работы с целыми числами используется INTEGER*4, принятое в Фортране по умолчанию. Для языков С и С++ должны использоваться типы Double и Long.

4. Имена файлов, содержащих компоненты библиотечной программы, получаются из ее библиотечного индекса. Расширения имен:

.for .c .C .txt .dat .res

Каждая программа располагается в отдельной директории, имя которой совпадает с библиотечным индексом. Например, программа А101 хранится в директории А101 в виде 6 файлов:

А101.for содержит фортранный текст программы А101,

T_А101.for — файл с тестом программы А101,

A101.dat — набор входных данных для теста,

A101.res — результат прогона теста,

A101.txt — описание программы А101 на русском языке,

A101E.txt — описание программы А101 на английском языке.

5. Программа включается в библиотеку только после того, как будет успешно откомпилирована, а по возможности и оттестирована на всех компьютерных платформах ОИЯИ.

6. Предлагаемая форма описания таких программ:

Название    Библиотека «JINRLIB»     Индекс:

Автор:
Представитель:
Язык:
Назначение:
Структура:
Тип: Подпрограмма, подпрограмма-функция
Имена входа для пользователя:
Внутpенние имена:
Используемые внешние подпрограммы:
Обращение:
Метод:
Точность, ограничения:
Ошибки исполнения:
Литература:

7. Головная директория библиотеки называется JINRLIB. Здесь размещаются:

а) программа для полной пересборки библиотеки из ее компонентов;

б) файл библиотеки, получаемый в процессе сборки;

в) поддиректории A101-Z999 компонентов библиотеки;

г) временные файлы, создаваемые в ходе сборки библиотеки.

8. Программа пересборки библиотеки индивидуальна для каждой платформы. Как правило, это текстовый файл, содержащий команды вызова компилятора и библиотекаря.

9. Предлагаемая организация материалов библиотеки пригодна для использования современных технологий сопровождения больших систем (например, CVS).

10. Программы, которые по разным причинам не удовлетворяют требованиям п. 2 (нет исходного текста, программа не является мобильной и т.п.), при желании автора также могут регистрироваться в JINRLIB под уникальным индексом со ссылкой на первоисточник. Вся информация, предоставленная автором (владельцем) программы, помещается на WWW-сервере и является доступной. По желанию автора это может быть аннотация программы, полное описание или руководство, исполняемый модуль или исходные тексты программы. Дополнительная информация может быть получена только у автора (владельца). Индексы таких программ начинаются с буквы X. Вторая буква определяет платформу, на которой работает программа: W — Windows, U — UNIX.

Для предоставления таких программ может быть использована форма, принятая для авторов программ библиотеки CPC, WWW-форма или форма, приведенная ниже.

1. Автор (владелец), e-mail.
2. Имя программы
3. Область применения.
4. Краткое описание возможностей программы, способы представления результатов, используемые алгоритмы и математические методы, физические модели и т.д.
5. Ссылки на публикации, руководства, инструкции, где описана программа.
6. Типы ЭВМ, операционные системы, под которыми работает программа. Языки программирования, на которых реализована программа.
7. Дополнительные библиотеки и пакеты программ, необходимые для работы программы (если необходимы).
8. Другое.

Сапожников А. П., sap@cv.jinr.ru,
Сапожникова Т. Ф., tsap@cv.jinr.ru

«Содержание»

7.2. Библиотека программ JINRLIB: наполнение и способы использования

Подготовлена первая версия библиотеки JINRLIB, включающая около 50 программ. Библиотека протестирована на платформах SPP, Convex, Windows 9X/NT/2000 для всех доступных нам фортранных трансляторов (MicroSoft 5.00, Fortran PowerStation 4.0, Compaq Visual Fortran 6.0). Для JINRLIB подготовлена WWW-страница, обеспечивающая электронный доступ к описаниям программ.

Адрес страницы:

http://www.jinr.ru/~tsap/Koi/jinrlib/jinrindx.htm

Ниже приведены правила работы с библиотекой (примеры вызова транслятора, параметры компиляции и т.п.) и ссылки на готовые библиотеки для Windows 9X/NT/2000.

На SPP, CV, BCV библиотеку JINRLIB нужно указать при вызове компилятора с языка фортран следующим образом:

CV, BCV: fc my_prog.f /usr/lib/libjinr.a

SPP: f77 my_prog.f /usr/lib/libjinr.a

Посмотреть содержимое библиотеки можно командой:

ar t /usr/lib/libjinr.a

JINRLIB для платформы Linux выполнена на ОС RedHat 6.2 с компиляторами

g77 GNU Fortran v.0.5.24 и egcs v.2.91.66.

Если в переменной LIB записан адрес библиотеки RHlib.a, то запуск компилятора с использованием библиотеки может выглядеть следующим образом:

g77 -o my_prog.exe my_prog.for /$LIB/RHlib.a

Для использования на компьютерах с ОС Windows 9X/NT/2000 библиотеку jinrlib нужно записать в одну из директорий и при вызове компилятора указывать полный путь к библиотеке.

JINRLIB для Microsoft Fortran 5.00.

Вызов компилятора:

fl my_prog.for %LIB%\jinrlib.lib

Получить список программ библиотеки в файле listlib можно командой:

lib %LIB%\jinrlib.lib , listlib

JINRLIB для Fortran PowerStation 4.0.

Вызов компилятора при работе в режиме эмуляции MS-DOS или в командной строке:

fl /MD my_prog.for %LIB%\jinrlib.lib

Получить список программ библиотеки в файле listlib можно командой:

lib /list %LIB%\jinrlib.lib > listlib

При работе в оконном режиме в меню Build/Settings.../Link в Object/library modules добавить jinrlib.lib, указав полный путь.

JINRLIB для Compaq Visual Fortran 6.0.

Вызов компилятора при работе в режиме эмуляции MS-DOS или в командной строке:

df my_prog.for %LIB%\jinrlib.lib

При работе в оконном режиме на контекстном меню Project/Settings/Link в Object/Library modules добавить jinrlib.lib, указав полный путь.

Если библиотека записана, например, в директории d:\fortran\lib, то полный путь к библиотеке будет d:\fortran\lib\jinrlib.lib.

То же самое с использованием переменной: если установить set LIB=d:\fortran\lib, тогда полный путь будет %LIB%\jinrlib.lib.

Адрес страницы со ссылками на готовые библиотеки для Windows и Linux:

http://www.jinr.ru/~tsap/Koi/jinrlib/jinrovr.htm.

По вопросам использования JINRLIB на платформе

Windows обращаться к Попковой Л.В. (lyuda@cv.jinr.ru),

Linux — к Некрасовой И.К. (ira@cv.jinr.ru),

UNIX (SPP, CV), Windows — к Сапожниковой Т.Ф. (tsap@cv.jinr.ru).

Сапожникова Т. Ф., tsap@cv.jinr.ru

«Содержание»

7.3. Общие сведения о библиотеке программ CERNLIB

Библиотека CERNLIB (http://wwwinfo.cern.ch/asd/index.html) — большая коллекция программ, поддерживаемых и распростаняемых на исходном языке, в объектном коде и в виде исполняемых модулей.

Краткое описание программ библиотеки (Short write-up) можно найти по адресу

wwwinfo.cern.ch/asdoc/cernlib.html,

более подробное (Long write-up), по адресу

wwwinfo.cern.ch/asdoc/Welcome.html

Адрес библиотеки CERNLIB для платформы Windows:

ftp://asisftp.cern.ch/pub/asis/intel_wnt/cern/2001

Описание структуры библиотеки, поддерживаемые платформы иполезные ссылки можно найти на странице

http://www.jinr.ru/~tsap/Koi/cernovr.htm.

Сапожникова Т. Ф., tsap@cv.jinr.ru

«Содержание»

7.4. Библиотека программ CPC в ОИЯИ

Журнал “Computer Physics Communication” (CPC), начиная с 1969 года, публикует на своих страницах подробные описания физических программ широкого профиля. Журнал издается Elsevier Science Publishers (Амстердам).

Сами программы собраны в библиотеку программ CPC (CPCPL), которая поставляется подписчикам журнала. Библиотека поддерживается Королевским Университетом Белфаста (Северная Ирландия) в соответствии с современными информационными технологиями. В настоящее время она насчитывает более 1700 программ, каждая из которых имеет свой четырехсимвольный идентификатор (Catalogue identifier) в соответствии с 23 разделами библиотеки от астрофизики до статистической физики. Программы распространяются в текстовом виде. Они написаны преимущественно на Фортране. Есть программы на языках C, C++, Lisp, Pascal, Mathematica, Maple, Reduce и т.д.

ОИЯИ имеет регулярную подписку на журнал CPC. Журнал находится в читальном зале научно-технической библиотеки ОИЯИ. Библиотеку программ CPC получает и поддерживает Лаборатория информационных технологий. По лицензионному соглашению каждый сотрудник ОИЯИ имеет доступ к общей CPC информации через CPC WWW-сервер

http://www.cpc.cs.gub.ac.uk/cpc/

и может получить в текстовом виде любую программу cpcpl. Подробно об этом указано на сайте ЛИТ в разделе SERVICE, его подразделе “Program Library”

URL http://www.jinr.ru/~tsap/Koi/cpc3.htm

Сохранена также возможность получить программы cpcpl из архива ЛИТ (ком. 407-В, тел. 6-37-61, Водопьянова Н.А., e-mail: vodopyan@jinr.ru).

Федорова Р. Н. (fedorova@vxjinr.jinr.ru, fedorova@jinr.ru)

«Содержание»

8. Программное обеспечение для LINUX-платформ

(ftp://linux4u.jinr.ru и http://linux4u.jinr.ru)

О сервере

Этот сервер называется linux4u (Linux для Вас). Он создан в 1997 году в Объединенном институте ядерных исследований (ОИЯИ) (http://www.jinr.ru) при поддержке Российского фонда фундаментальных исследований (РФФИ) (http://www.rfbr.ru/). Основная задача сервера — обеспечить более простую и доступную установку ОС Linux по ftp для русскоязычных пользователей. В настоящее время на сервере установлены копии дистрибутивов RedHat, Debian, SuSE и другие. Подробнее можно посмотреть на http://linux4u.jinr.ru.

Для научных расчетов и обработки экспериментальных данных Вы можете использовать библиотеку CERNLIB (http://linux4u.jinr.ru/cern/cernkoi.htm), разработанную в Европейском центре ядерных исследований (CERN) (http://wwwinfo.cern.ch/) совместно с ОИЯИ и установленную на нашем сервере.

Что такое Linux?

Linux — это бесплатно распространяемая операционная система (ОС), первоначально созданная Линусом Торвальдом. Распространяется согласно GNU General Public лицензии и доступна любому. Более подробную информацию смотрите на сервере Linux Organization (http://www.linux.org/). Огромным преимуществом ОС Linux по сравнению с Microsoft Windows является ее открытость, т. е. представление не только исполняемого кода программ, но и их исходных текстов, что позволяет проверять и модернизировать программы.

Идея создания свободно распространяемого математического обеспечения Ричарда Столлмена нашла много сторонников во всем мире. Этот проект в настоящее время бурно развивается. Подробнее смотри http://www.gnu.org/gnu/linux-and-gnu.ru.html. Различные дистрибутивы ОС Linux создают более десятка коллективов программистов.

Создавая наш сервер, мы хотели испытать несколько разработок и рекомендовать использовать и поддерживать в ОИЯИ наиболее подходящую. Однако эта привлекательная идея оказалась нежизнеспособной. В соревновании разработчиков Linux вырываются вперед разные коллективы. Если несколько лет назад лидером был Slaсkware, то сейчас его опередил Redhat. Абсолютного лидера определить невозможно, так как предпочтения зависят от назначения компьютера (сервер, рабочая станция) и характера решаемых задач (научные вычисления, редактирование текстов или изображений и т.п.). Хорошим тоном для разработчиков стало включать в дистрибутив, кроме собственно ОС, различные приложения. Это трансляторы (С, фортран ...), редакторы (Latex, StarOffice ...) и многое другое. Выбрав соответствующие опции при установке, вы получаете бесплатно «в одном флаконе» с ОС необходимые приложения.

Что в настоящее время доступно на linux4u по ftp:

В условиях ОИЯИ, где широко развито международное сотрудничество и используются большие и сложные программные комплексы для расчетов и обработки данных, выбор дистрибутива Linux зависит от традиций, сложившихся в научной группе, а переход на стандартную версию требует адаптации готовых программ, что не всегда оправдано. Поэтому на сервере представлены несколько дистрибутивов с учетом их востребованности в ОИЯИ.

— ASPlinux

Текущий дистрибутив ASPlinux. Разработка отделения ASPLinux компании SWsoft. Совместима с RedHat 7.1.

binary, sources

— Brutalware

Linux для ознакомления и для старых маленьких машин.

— CERN

CERN Soft, собранный на Debian 1.3 с libc5 (97a). CERN Soft, собранный на RedHat 6.1 c glibc (99a).

binary

— Conectiva

Snapshot текущей версии Linux от компании Conectiva. Что-то вроде RedHat Rawhide, но более стабильный, содержит больше пакетов, чем RedHat.

binary, sources, updates

— DataGrid

Все необходимое для инсталляции и запуска Grid на linux. Собраны разные версии Globus Toolkit и сопутствующее програмное обеспечение.

binary, sources

— Gnome

CVS версия графической оболочки Gnome и некоторые Gnome desktop для RedHat и SuSE от ximian.com.

binary, sources

— HOWTO

Linux HOWTO коллекция с metalab.unc.edu.

text

— Mandrake

Последняя версия (8.0) Linux-Mandrake. Близка к RedHat, интегрирована с графической оболочкой KDE.

binary, sources, updates

— Recovery

Linux на дискете, для восстановления системы.

binary

— RedHat

  • cern

RedHat 6.1, сертифицированный в CERN. Набор продуктов для него.

binary

  • redhat

Дистрибутивы нескольких версий RedHat (6.1, 6.2, 7.1).

binary, sources, updates

  • tux

kernel-based, threaded HTTP server.

binary, sources

— SCYld

Дистрибутив и сопутствующие ПО для создания Linux кластера beowulf и распределенных вычислений с помощью MPI.

binary, sources

  • network

Коллекция последних версий драйверов сетевых карт для linux.

— StarOffice_RU

StarOffice для linux, solaris, windows. Аналог MS офис. Ставится сразу русифицированным.

binary

— SuSE

Дистрибутивы нескольких версий S.u.S.E. Linux (5.3, 6.4, 7.2).

  • Gnome
  • KDE
  • XFree86

Доработанные фирмой S.u.S.E. для своих Linux соответствующие продукты.

binary, sources, updates

— VAlinux

Построен на основе RedHat. Включает профессиональные решения для установки кластера/фермы.

binary, sources, updates

— X11

X11R6.4 - X11 Release 6 PatchLevel 4.

— XFree86

Последние версии XFree86 для основных свободно распространяемых версий unix + Solaris. Последние версии драйверов NVidia для Linux и Windows.

binary, sources, updates

— coyote

Router или Gateway на основе linux на маленькой машине.

binary, sources, updates

— debian

Дистрибутивы Debian GNU/Linux.

binary, sources, updates

— kde

Стабильная версия и snapshot KDE.

binary, sources, updates

— kernel

Последние версии ядра Linux серий 2.0, 2.2, 2.4. Набор дополнений и изменений для ядра:

  • alsa sound — драйверы и утилиты звуковых карт
  • creative EMU — драйверы для карты EMU10K
  • ext2fs — утилиты файловой системы
  • сенсоры — драйверы и утилиты для датчиков температуры и т. п.
  • NFS версии 3
  • util linux
  • openafs — файловая система OpenAFS для разных платформ, последние версии.

binary, sources, updates

— linux-router

Router на основе linux на одной дискете.

binary, sources, updates

— looplinux

Linux для ознакомления и старых маленьких машин.

binary, sources, updates

— misc

Коллекция различных утилит для Linux, собранная из разных мест.

  • admin/mon

Мониторинг компьютерного центра

  • crypt/SSLeay
  • crypt/openssh

Последние версии OpenSSH

  • crypt/openssl
  • db/openldap
  • jobc/batch/OpenPBS

Последние версии OpenPBS

— netscape

Последние версии Netscape для различных unix и Windows.

binary

— superrescue

Linux, загружаемый с CD, для восстановления системы.

binary, sources, updates

— trinux

Linux, устанавливаемый на DOS-разделе диска. Станция обслуживания сети и слежения за состоянием сетевого оборудования. Может работать как роутер или модемный пул.

binary, sources, updates

В. В. Мицын, vvm@cv.jinr.ru
А. В. Гусев, gusev@cv.jinr.ru


«Содержание»