Отчет по лабораторным работам по «Информационные и сетевые технологии ядерной энергетики»

Автор работы: Пользователь скрыл имя, 02 Мая 2012 в 19:51, лабораторная работа

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

Целью работы является развитие навыков использования современных информационных технологий применительно к задачам ЯЭ. Если рассматривать задачи связанные с научно‐исследовательской и конструкторской деятельностью в данной области, то основная их специфика в настоящее время характеризуется следующим:
1. Существенным требованием к компьютерным ресурсам: RAM, жесткий диск, CPU
2. Большая продолжительность расчетов и, следовательно, требования к надежности
расчетной платформы, ОС и оптимизация использования расчетного оборудования
3. Широкое использование методов параллельных расчетов

Содержание

Цель работы ……………………………………………………………………………...3
Описание используемой подпрограммы………………………………………………………....................………4
Вспомогательные подпрограммы ……………………………………………………...6
Типы данных …………………………………………………………………………….8
Расчет используемой виртуальной памяти.....................................................................9
Текст программы (с одинарной точностью) …………………………………………..10
(с двойной точностью) …………………………………………...11
Обработка статистических данных..................................................................................14
Выводы …………………………………………………………………………………...21
Список используемой литературы...................................................................................21

Вложенные файлы: 1 файл

ART FORTRAN print.docx

— 88.72 Кб (Скачать файл)

НИУ МЭИ

 

 

Кафедра АЭС

 

 

 

Отчет по лабораторным работам  по курсу

«Информационные и сетевые технологии ядерной энергетики»

 

 

 

 

 

Студент: Артюх Н.А

Группа: ТФ-11-08

Преподаватель: Воробьев Ю.Б.

 

 

Москва 2012

Содержание

 

  1. Цель работы ……………………………………………………………………………...3
  2. Описание используемой подпрограммы………………………………………………………....................………4
  3. Вспомогательные подпрограммы ……………………………………………………...6
  4. Типы данных …………………………………………………………………………….8
  5. Расчет используемой виртуальной памяти.....................................................................9
  6. Текст программы (с одинарной точностью) …………………………………………..10

(с двойной точностью) …………………………………………...11

  1. Обработка статистических данных..................................................................................14
  2. Выводы …………………………………………………………………………………...21
  3. Список используемой литературы...................................................................................21

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Цель работы

Целью работы является развитие навыков  использования современных информационных технологий применительно к задачам  ЯЭ. Если рассматривать задачи связанные  с научно‐исследовательской и конструкторской деятельностью в данной области, то основная их специфика в настоящее время характеризуется следующим:

1. Существенным требованием к  компьютерным ресурсам: RAM, жесткий  диск, CPU

2. Большая продолжительность расчетов  и, следовательно, требования  к надежности

расчетной платформы, ОС и оптимизация  использования расчетного оборудования

3. Широкое использование методов  параллельных расчетов

4. Использование языков высокого  уровня Fortran, C/C++

5. Использование готовых библиотек  математических процедур

6. Требования к повышенной точности  расчетов

Основываясь на этом в лабораторная работа состоит из расчетной программе  на языке высокого уровня Fortran, что  соответствует пункту 4. Программа  моделирует работу реальной расчетной  программы ЯЭ. Она должна удовлетворять  задаче существенного

заполнения RAM компьютера (пункт 1). В работе было использовано для программы одинарной  точности около 174 mb и 348 mb для двойной точности. Для правильной оптимизации расчетного оборудования и отражения специфики работы программ ЯЭ учебная программа должна считать не менее 40 сек (пункты 2 и 1). Написание программы базируется на использовании математических процедур библиотеки IMSL на основе варианта выданного преподавателем, что соответствует пункту 5.

 

Особенности реализации на Fortran

Для тестов генерировались массивы случайный  чисел, которые записывались в файл, другая программа считывала эти  массивы из файла и выполняла  функции imsl.

Было  выявлено, что при работе подпрограмм  с определенным размером массива, возникновение  ошибки 170 переполнение стека, что потребовало  увеличения стека в настройках. В  оптимизированном режиме был установлен наиболее «быстрый» процессор, быстрая  математическая библиотека, минимальный  режим отладки и предупреждений. Для каждой функции imsl использовались отдельные массивы данных, не пересекающиеся с друг другом. При запуске нескольких программ одновременно была предпринята попытка сделать это автоматически. Был создан bat-файл с написанием в нем команд start/*имя программы*, но при запуске этого файла сначала все программы открывались, затем все кроме одной практически мгновенно закрылись. Поэтому были запущены несколько приложений far, где было выставлено имя программы, затем при быстром ручном переключении они все одновременно были вызваны.

 

 

Описание подпрограммы, используемой в данной лабораторной работе.

 

DLPRS/DDLPRS (Single/Double precision)

При выполнении работы использовалась подпрограмма DLPRS(DDLPRS), которая

Arguments

M — Number of constraints. (Input)

NVAR — Number of variables. (Input)

A — M by NVAR matrix containing the coefficients of the M constraints. (Input)

LDA — Leading dimension of A exactly as specified in the dimension statement

of the calling program. (Input)

LDA must be at least M.

BL — Vector of length M containing the lower limit of the general constraints; if

there is no lower limit on the I-th constraint, then BL(I) is not referenced.

(Input)

BU — Vector of length M containing the upper limit of the general constraints; if

there is no upper limit on the I-th constraint, then BU(I) is not referenced; if there

are no range constraints, BL and BU can share the same storage locations. (Input)

C — Vector of length NVAR containing the coefficients of the objective function.

(Input)

IRTYPE — Vector of length M indicating the types of general constraints in the

matrix A. (Input)

Let R(I) = A(I, 1) * XSOL(1) + . + A(I, NVAR) * XSOL(NVAR). Then, the value

of IRTYPE(I) signifies the following:

IRTYPE(I) I-th Constraint

0 BL(I).EQ.R(I).EQ.BU(I)

1 R(I).LE.BU(I)

2 R(I).GE.BL(I)

3 BL(I).LE.R(I).LE.BU(I)

XLB — Vector of length NVAR containing the lower bound on the variables; if

there is no lower bound on a variable, then 1.0E30 should be set as the lower

bound. (Input)

XUB — Vector of length NVAR containing the upper bound on the variables; if

there is no upper bound on a variable, then -1.0E30 should be set as the upper

bound. (Input)

OBJ — Value of the objective function. (Output)

XSOL — Vector of length NVAR containing the primal solution. (Output)

DSOL — Vector of length M containing the dual solution. (Output)

Comments

1. Automatic workspace usage is

DLPRS M * M + 57 * M + 3 * NVAR units, or

DDLPRS 2 * M * M + 85 * M + 3 * NVAR units.

Workspace may be explicitly provided, if desired, by use of

D2PRS/DD2PRS. The reference is

CALL D2PRS (M, NVAR, A, LDA, BL, BU, C, IRTYPE, XLB,

XUB, OBJ, XSOL, DSOL, AWK, LDAWK, WK,

IWK)

The additional arguments are as follows:

AWK — Real work array of dimension 1 by 1. (AWK is not used in the

new implementation of the revised simplex algorithm. It is retained

merely for calling sequence consistency.)

LDAWK — Leading dimension of AWK exactly as specified in the

dimension statement of the calling program. LDAWK should be 1. (LDAWK

is not used in the new implementation of the revised simplex algorithm.

It is retained merely for calling sequence consistency.)

WK — Real work vector of length M * (M + 28).

IWK — Integer work vector of length 29 * M + 3 * NVAR.

2. Informational errors

Type Code

3 1 The problem is unbounded.

4 2 Maximum number of iterations exceeded.

3 3 The problem is infeasible.

4 4 Numerical difficulty occurred; using double precision

may help.

4 5 The bounds are inconsistent.

Algorithm

The routine DLPRS uses a revised simplex method to solve linear programming

problems, i.e., problems of the form

 

 

_______________________________________________________

subject to bO . Ax . bX

xO . x . xX

where c is the objective coefficient vector, A is the coefficient matrix, and the

vectors bO, bX, xO and xX are the lower and upper bounds on the constraints and the

variables, respectively.

For a complete description of the revised simplex method, see Murtagh (1981) or

Murty (1983).

Example

A linear programming problem is solved.

INTEGER LDA, M, NVAR

PARAMETER (M=2, NVAR=2, LDA=M)

C M = number of constraints

C NVAR = number of variables

C

INTEGER I, IRTYPE(M), NOUT

REAL A(LDA,NVAR), B(M), C(NVAR), DSOL(M), OBJ, XLB(NVAR),

& XSOL(NVAR), XUB(NVAR)

EXTERNAL DLPRS, SSCAL, UMACH

C

C Set values for the following problem

C

C Max 1.0*XSOL(1) + 3.0*XSOL(2)

C

C XSOL(1) + XSOL(2) .LE. 1.5

C XSOL(1) + XSOL(2) .GE. 0.5

C

C 0 .LE. XSOL(1) .LE. 1

C 0 .LE. XSOL(2) .LE. 1

C

DATA XLB/2*0.0/, XUB/2*1.0/

DATA A/4*1.0/, B/1.5, .5/, C/1.0, 3.0/

DATA IRTYPE/1, 2/

C To maximize, C must be multiplied by

C -1.

CALL SSCAL (NVAR, -1.0E0, C, 1)

C Solve the LP problem. Since there is

C no range constraint, only B is

C needed.

CALL DLPRS (M, NVAR, A, LDA, B, B, C, IRTYPE, XLB, XUB, OBJ,

& XSOL, DSOL)

C OBJ must be multiplied by -1 to get

C the true maximum.

OBJ = -OBJ

C DSOL must be multiplied by -1 for

C maximization.

CALL SSCAL (M, -1.0E0, DSOL, 1)

C Print results

CALL UMACH (2, NOUT)

WRITE (NOUT,99999) OBJ, (XSOL(I),I=1,NVAR), (DSOL(I),I=1,M)

C

99999 FORMAT (//, ’ Objective = ’, F9.4, //, ’ Primal ’,

& ’Solution =’, 2F9.4, //, ’ Dual solution =’, 2F9.4)

C

END

Output

Objective = 3.5000

Primal Solution = 0.5000 1.0000

Dual solution = 1.0000 0.0000

 

Вспомогательные подпрограммы :

Timef() – определяет время работы программы. Значение всегда записывается с двойной точностью.

RANDOM_NUMBER- организует псевдослучайное число (или массив)  чисел из равномерно распределенного интервала 0<x<1.

Вызов при помощи:

USE DFLIB

Intrinsic Subroutine: Returns one pseudorandom number or an array of such numbers.

Syntax

CALL RANDOM_NUMBER (harvest)

harvest  
(Output) Must be of type real. It can be a scalar or an array variable. It is set to contain pseudorandom numbers from the uniform distribution within the range 0 <= x < 1.

The seed for the pseudorandom number generator used by RANDOM_NUMBER can be set or queried with RANDOM_SEED. If RANDOM_SEED is not used, the processor sets the seed for RANDOM_NUMBER to a processor-dependent value.

The RANDOM_NUMBER generator uses two separate congruential generators together to produce a period of approximately 10**18, and produces real pseudorandom results with a uniform distribution in (0,1). It accepts two integer seeds, the first of which is reduced to the range [1, 2147483562]. The second seed is reduced to the range [1, 2147483398]. This means that the generator effectively uses two 31-bit seeds.

Compatibility CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

DRAND, DRANDM - организует псевдослучайное число (или массив)  чисел из равномерно распределенного интервала 0<x<1 (для двойной точности).

Вызов: : USE DFPORT

Syntax

result = DRAND (iflag)  
result = DRANDM (iflag)

iflag  
(Input) INTEGER(4). Controls the way the random number is selected.

Results: The result is of type REAL(8). Return values are:

Value of iflag

Selection process

1

The generator is restarted and the first random value is selected.

0

The next random number in the sequence is selected.

Otherwise

The generator is reseeded using iflag, then restarted, and the first random value is selected.


There is no difference between DRAND and DRANDM. Both functions are included to insure portability of existing code that references one or both of them.

DO

 

    Описание

Пoвтopнoe выпoлнeниe операторов, следующих зa DO вплoть дo опеpaтopa c меткoй slabel включитeльнo.

  

     Syntax

       DO slabel [,]variable=expr1,expr2[,expr3]

Где:

       slabel - oпepaтopнaя мeткa выпoлняeмoгo oпepaтopa.

       variable - цeлaя пepeмeннaя

       expr1,expr2,expr3 - цeлoe выpaжeниe

 

 

 

WRITE

 

Передает данные из объектов списка-ввода/вывода в файл, связанный  с указанным устройством.

 

    WRITE (определитель-устройства[,определитель-формата]

    [,IOSTAT=состояние][,ERR=метка][,REC=номер-записи])список-ввода/вывода

Call

Bызывaeт и выпoлняeт пoдпpoгpaммы  и дpугиe пpoгpaммныe eдиницы.

CALL имя[([параметр[,параметр]...])]

Гдe:

имя - имя вызывaeмoй пoдпpoгpaммы

параметр - фaктичecкий пapaмeтp, кoтopый мoжeт быть:

  1. Oпpeдeлителем альтернативного вoзвpaтa (*n).
  2. Bыpaжeниeм.
  3. Koнcтaнтой (или выpaжeниeм из кoнcтaнт).
  4. Пepeмeнной.
  5. Элeмeнтом мaccивa.
  6. Maccивом.
  7. Пoдпpoгpaммой.
  8. Bнeшней функцией.
  9. Bнутpeнней функцией, иcпoльзуeмой кaк пapaмeтp.

PRINT

 

                Описание

Оператор PRINT передает значения из списка вывода в устройство ввода/вывода.

 

Для вывода на экран:

PRINT *,' TIME=', TIME

Типы данных:

INTEGER=целочисленный тип = -128 … +127

 

REAL = вещественный тип = -3,4028235Е-38…-1,1754944Е-38

0

+1,1754944Е-38…+3,4028235Е+38

 

REAL (8) = вещественный тип = -1,797693134862316D+308…-2.225073858507201D-308

0

+2.225073858507201D-308…+1.797693134862316D+308

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Расчет памяти используемый в программе

Одинарная точность

Одно данное типа real занимает в памяти 4 байта

M=6600 NVAR=6600.

р а с ч е т  з  а н и м а е м о й  о п е р а т и в н  о й  п а м я т и 





О п р е д е л  е н и е  р а з м е  р н о с т и  м а с  с и в а 





В о з м е м  о  к р у г л е н н о  е  з н а ч е н и е , к о т о р о е  б у  д е т  з а н и м а  т ь  к о л -в о  б а  й т :





 

 

 

 

 

 

 

 

Двойная точность

Одно данное типа real(8) занимает в памяти 8 байт

р а с ч е т  з  а н и м а е м о й  о п е р а т и в н  о й  п а м я т и 



байт



о п р е д е л  е н и е  р а з м е  р н о с т и  м а с  с и в а 





В о з м е м  о  к р у г л е н н о  е  з н а ч е н и е , к о т о р о е  б у  д е т  з а н и м а  т ь  к о л -в о  б а  й т :



байт



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Текст программы

Основная  программа:одинарная точность: (n=10e5)

USE DFLIB

USE DFPORT

INTEGER,PARAMETER ::M=6600, NVAR=6600, LDA=M

INTEGER n,i, IRTYPE(M)

REAL A(LDA,NVAR), BL(M),BU(M), C(NVAR), DSOL(M), OBJ, XLB(NVAR), XSOL(NVAR), XUB(NVAR),bd

REAL(8) timel,elapsed_time

IRTYPE=3

XLB=-10**5

XUB=10**5

call random_number(A)

call random_number(BL)

call random_number(BU)

call random_number(C)

C=2*(C-0.5)

A=2*(A-0.5)

BL=-12+2*BL

BU=10+2*BU

write(*,*)'vvod n'

read(*,*)n

elapsed_time = TIMEF( )

DO i = 1, n

    CALL DLPRS (M, NVAR, A, LDA, BL, BU, C, IRTYPE, XLB, XUB, OBJ, XSOL, DSOL)

bd=5/real(n)

BL=BL+bd

BU=BU-bd

END DO

elapsed_time = TIMEF( )

PRINT '(a,f13.7)','time=', elapsed_time

read(*,*)

 END

 

 

Основная  прграмма:двойная  точность :(n=10e5)

USE DFLIB

USE DFPORT

INTEGER,PARAMETER ::M=6600, NVAR=6600, LDA=M

INTEGER n,i,j, IRTYPE(M)

REAL(8) A(LDA,NVAR), BL(M),BU(M), C(NVAR), DSOL(M), OBJ, XLB(NVAR), XSOL(NVAR), XUB(NVAR),bd

REAL(8) timel,elapsed_time

IRTYPE=3

XLB=-10**5

XUB=10**5

DO i=1,M

DO j=1,M

A(i,j)=DRAND(1)

enddo

enddo

DO i=1,M

DO j=1,M

c(i)=DRAND(1)

enddo

enddo

DO i=1,M

DO j=1,M

BU(i)=DRAND(1)

enddo

enddo

DO i=1,M

DO j=1,M

BL(i)=DRAND(1)

enddo

enddo

C=2*(C-0.5)

A=2*(A-0.5)

BL=-12+2*BL

BU=10+2*BU

write(*,*)'vvod n'

read(*,*)n

elapsed_time = TIMEF( )

DO i = 1, n

    CALL DDLPRS (M, NVAR, A, LDA, BL, BU, C, IRTYPE, XLB, XUB, OBJ, XSOL, DSOL)

bd=5/real(n)

BL=BL+bd

BU=BU-bd

END DO

elapsed_time = TIMEF( )

PRINT '(a,f13.7)','time=', elapsed_time

 read(*,*)

END

Тестирование  программы:

А) Режим debug (отладки)

Заставляет компилятор:

1. Проверять целую арифметику  на переменные и деление на  нуль.

2. Проверять величины  присваемого GO TO на допустимость  списка в операторе присваемое GO TO.

3. Обеспечивать функционирование  системы фиксации ошибок при  счете с именами файлов и  номерами строк, так что при  возникновении ошибки на экран  выдается имя файла и номер  строки.

DEBUG не переключает и  не подавляет поддержку реакций  на ошибки для арифметики с  плавающей запятой. МС-Фортран  поддерживает стандарт IEEE при обеспечении  реакций на ошибки в пяти  следующих ситуациях : неверное  действие, деление на нуль, переполнение  разрядной сетки, незаполнение  разрядной сетки и потеря точности. Более подробно о поддержке  реакций на ошибки смотрите  приложение Е руководства пользователя  МС-Фортрана.

Информация о работе Отчет по лабораторным работам по «Информационные и сетевые технологии ядерной энергетики»