Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Расчетное задание / КМ4 / КМ4 Долгов Р ТФ-12-20.docx
Скачиваний:
3
Добавлен:
16.05.2024
Размер:
1.29 Mб
Скачать

Листинг программы с двойной точностью.

program dvoinaya_tochnost

implicit none

! Объявление переменных

INTEGER LDA, N, I, j, k, z, v

PARAMETER (LDA=3, N=3)

INTEGER IPVT(N), NOUT

REAL(8) RCOND, DET1, DET2, START, FINISH

COMPLEX(8) A(LDA,LDA), B(N,3), X(N,3), FAC(LDA,LDA), C(N), D(N), RES(N), M1(3,12000000), M2(3,12000000), M3(12000000)

CALL CPU_TIME (START)

DATA A/(3.0,0.0), (1.0,1.0), (4.0,0.0), (1.0,-1.0), (2.0,0.0), (-5.0,-1.0), (4.0,0.0), (-5.0,1.0), (-2.0,0.0)/

DATA B/(7.0,32.0), (-39.0,-21.0), (51.0,9.0), (-6.0,11.0), (-5.5,-22.5), (16.0,17.0), (-2.0,-17.0), (4.0,10.0), (-2.0,12.0)/

DATA C/(7.0,32.0), (-39.0,-21.0), (51.0,9.0)/

DO j=1,12000000-2,3

DO k=0,2

M1(1,j+k)=A(1,1+k)

M1(2,j+k)=A(2,1+k)

M1(3,j+k)=A(3,1+k)

A(1,1+k)=A(1,1+k)+(0.001/j)

A(2,1+k)=A(2,1+k)+(0.001/j)

A(3,1+k)=A(3,1+k)+(0.001/j)

M2(1,j+k)=B(1,1+k)

M2(2,j+k)=B(2,1+k)

M2(3,j+k)=B(3,1+k)

B(1,1+k)=B(1,1+k)+(0.001/j)

B(2,1+k)=B(2,1+k)+(0.001/j)

B(3,1+k)=B(3,1+k)+(0.001/j)

M3(j+k)=C(1+k)

C(1+k)=C(1+k)+(0.001/j)

end do

end do

DO z=1,12000000-2,3

! Программа 1

CALL DLFTHF (N, A, LDA, FAC, LDA, IPVT)

DO 10 I=1, 3

CALL DLFSHF (N, FAC, LDA, IPVT, B(1,I), X(1,I))

10 CONTINUE

CALL WRCRN ('X', N, 3, X, N, 0)

! Программа 2

CALL UMACH (2, NOUT)

CALL DLFCHF (N, A, LDA, FAC, LDA, IPVT, RCOND)

WRITE (NOUT,99998) RCOND, 1.0E0/RCOND

DO 20 I=1, 3

CALL DLFIHF (N, A, LDA, FAC, LDA, IPVT, C, D, RES)

WRITE (NOUT,99999) I

CALL WRCRN ('D', 1, N, D, 1, 0)

CALL WRCRN ('RES', 1, N, RES, 1, 0)

C(2) = C(2) + (0.2E0, 0.2E0)

20 CONTINUE

99998 FORMAT (' RCOND = ',F5.3,/,' L1 Condition number = ',F6.3)

99999 FORMAT (//,' For problem ', I1)

! Программа 3

CALL DLFTHF (N, A, LDA, FAC, LDA, IPVT)

CALL DLFDHF (N, FAC, LDA, IPVT, DET1, DET2)

CALL UMACH (2, NOUT)

DO k=0,2

A(1,1+k)=M1(1,z+k)

A(2,1+k)=M1(2,z+k)

A(3,1+k)=M1(3,z+k)

B(1,1+k)=M2(1,z+k)

B(2,1+k)=M2(2,z+k)

B(3,1+k)=M2(3,z+k)

C(1+k)=M3(z+k)

END DO

END DO

WRITE (NOUT,99997) DET1, DET2

99997 FORMAT (' The determinant is', F5.1, ' * 10**', F2.0)

CALL CPU_TIME (FINISH)

PRINT *, 'TIME = ', FINISH-START, ' SEC'

end program dvoinaya_tochnost

Расчет памяти.

В программе используется матрица А размерностью 3х3, матрица В размерностью 3х3, а также вектор-столбец С 3х1. В постановке задачи исследования производительности ПК необходимо выполнение программы минимум 40 секунд времени, с учётом ограничения на используемую RAM-память компьютера (минимум 300-400 Мб), поэтому для увеличения используемой процессом памяти было необходимо создать буферную матрицу. При 300 Мб выполняется минимум по времени. Посчитаем необходимое количество элементов:

(300 ∙ 1024 ∙ 1024) / (4 ∙ 3 ∙ 2 + 1) = 11234736 элементов.

Примем значение 12000000. Тогда объем памяти для одинарной точности будет составлять 320,43 Мб. Соответсвтенно для двойной точности объем памяти составит 640,86 Мб.

4 Байта предоставляется 1 элементу вещественного типа REAL. Так как будет использоваться 2 буферные матрицы – делим на 2. Таким образом, 2 буферные матрицы будет иметь размерность (3, 12000000), а буферный вектор столбец (12000000).

Основные параметры тестируемой системы.

  • CPU – Intel(R) Core(TM) i7-12800 1.80 GHz 3.70 GHz; 14 ядер, 20 потоков

  • RAM – 16.00 Гб Kingston 9905600-119.A00G DDR4 SO-DIMM 8 Gb, Kingston 9905600-119.A00G DDR4 SO-DIMM 8 Gb

  • SSD – NVMe Kingston RBUSNS8 1 Тб

  • Windows 11 Домашняя для одного языка, 64-разрядная

Результаты измерений.

Таблица 1 – результаты 90 расчетов в режиме debug с одинарной точностью

Т1 = 22.92

Т2 = 17.09

Т3 = 16.93

Т4 = 10.98

Т5 = 18.56

Т6 = 20.42

Т7 = 13.76

Т8 = 21.00

Т9 = 27.79

Т10 = 21.67

Т11 = 23.56

Т12 = 17.00

Т13 = 23.23

Т14 = 27.26

Т15 = 41.85

Т16 = 18.45

Т17 = 9.734

Т18 = 8.031

Т19 = 12.85

Т20 = 17.94

Т21 = 14.96

Т22 = 9.265

Т23 = 18.91

Т24 = 14.78

Т25 = 14.07

Т26 = 18.92

Т27 = 17.14

Т28 = 16.96

Т29 = 19.55

Т30 = 25.28

Т31 = 27.58

Т32 = 21.50

Т33 = 21.50

Т34 = 21.94

Т35 = 21.70

Т36 = 16.00

Т37 = 23.31

Т38 = 20.59

Т39 = 20.21

Т40 = 22.71

Т41 = 17.21

Т42 = 25.10

Т43 = 27.70

Т44 = 22.70

Т45 = 21.98

Т46 = 21.85

Т47 = 26.62

Т48 = 18.73

Т49 = 20.50

Т50 = 28.92

Т51 = 29.76

Т52 = 20.01

Т53 = 31.85

Т54 = 24.59

Т55 = 30.53

Т56 = 33.31

Т57 = 25.51

Т58 = 34.10

Т59 = 23.57

Т60 = 29.32

Т61 = 46.40

Т62 = 52.34

Т63 = 25.12

Т64 = 15.09

Т65 = 22.28

Т66 = 22.31

Т67 = 16.57

Т68 = 27.84

Т69 = 10.87

Т70 = 5.984

Т71 = 16.34

Т72 = 11.40

Т73 = 16.73

Т74 = 16.43

Т75 = 18.89

Т76 = 16.75

Т77 = 14.69

Т78 = 7.328

Т79 = 8.141

Т80 = 12.23

Т81 = 13.73

Т82 = 18.97

Т83 = 11.73

Т84 = 27.20

Т85 = 22.09

Т86 = 28.05

Т87 = 27.56

Т88 = 13.84

Т89 = 7.250

Т90 = 12.83

Таблица 2 – результаты 90 расчетов в режиме realise с одинарной точностью

Т1 = 25.14

Т2 = 13.89

Т3 = 19.125

Т4 = 19.66

Т5 = 21.23

Т6 = 20.7

Т7 = 25.37

Т8 = 22.28

Т9 = 24.97

Т10 = 24.09

Т11 = 19.40

Т12 = 22.17

Т13 = 23.09

Т14 = 28.54

Т15 = 32.00

Т16 = 23.93

Т17 = 20.62

Т18 = 28.50

Т19 = 28.09

Т20 = 14.79

Т21 = 19.35

Т22 = 24.56

Т23 = 22.28

Т24 = 22.12

Т25 = 20.40

Т26 = 19.18

Т27 = 25.35

Т28 = 14.89

Т29 = 19.21

Т30 = 22.73

Т31 = 21.79

Т32 = 18.65

Т33 = 16.50

Т34 = 26.85

Т35 = 24.34

Т36 = 25.98

Т37 = 24.64

Т38 = 25.35

Т39 = 23.51

Т40 = 25.39

Т41 = 20.04

Т42 = 27.09

Т43 = 25.20

Т44 = 48.04

Т45 = 26.03

Т46 = 26.31

Т47 = 28.48

Т48 = 24.43

Т49 = 19.51

Т50 = 24.37

Т51 = 29.17

Т52 = 23.62

Т53 = 25.70

Т54 = 20.85

Т55 = 27.67

Т56 = 24.37

Т57 = 25.84

Т58 = 24.50

Т59 = 18.53

Т60 = 32.00

Т61 = 25.86

Т62 = 23.20

Т63 = 28.41

Т64 = 31.23

Т65 = 30.16

Т66 = 21.72

Т67 = 21.73

Т68 = 34.86

Т69 = 28.79

Т70 = 31.61

Т71 = 33.86

Т72 = 22.86

Т73 = 22.54

Т74 = 23.14

Т75 = 25.95

Т76 = 31.39

Т77 = 26.41

Т78 = 16.35

Т79 = 16.98

Т80 =

24.98

Т81 = 16.53

Т82 = 20.12

Т83 = 18.72

Т84 = 15.34

Т85 = 15.05

Т86 = 19.70

Т87 = 33.13

Т88 = 16.75

Т89 = 29.67

Т90 = 30.44

Таблица 3 – результаты 90 расчетов в режиме realise с двойной точностью

Т1 = 42.12

Т2 = 44.86

Т3 = 57.25

Т4 = 46.21

Т5 = 53.75

Т6 = 57.43

Т7 = 63.11

Т8 = 59.09

Т9 = 71.56

Т10 = 43.04

Т11 = 48.04

Т12 = 54.44

Т13 = 49.65

Т14 = 51.22

Т15 = 56.78

Т16 = 64.08

Т17 = 54.44

Т18 = 58.95

Т19 = 59.92

Т20 = 51.14

Т21 = 47.63

Т22 = 45.06

Т23 = 38.21

Т24 = 54.82

Т25 = 58.23

Т26 = 64.61

Т27 = 53.73

Т28 = 58.42

Т29 = 63.63

Т30 = 40.27

Т31 = 35.22

Т32 = 58.36

Т33 = 64.87

Т34 = 55.24

Т35 = 69.51

Т36 = 74.32

Т37 = 34.11

Т38 = 43.70

Т39 = 37.89

Т40 = 59.29

Т41 = 32.01

Т42 = 58.11

Т43 = 58.96

Т44 = 64.44

Т45 = 46.74

Т46 = 56.42

Т47 = 31.12

Т48 = 45.00

Т49 = 62.34

Т50 = 38.87

Т51 = 53.24

Т52 = 59.37

Т53 = 61.98

Т54 = 55.64

Т55 = 62.43

Т56 = 58.41

Т57 = 39.31

Т58 = 52.60

Т59 = 55.75

Т60 = 58.80

Т61 = 29.07

Т62 = 50.05

Т63 = 47.87

Т64 = 65.42

Т65 = 55.41

Т66 = 75.32

Т67 = 53.76

Т68 = 38.05

Т69 = 58.88

Т70 = 53.86

Т71 = 46.32

Т72 = 46.76

Т73 = 45.68

Т74 = 69.91

Т75 = 45.00

Т76 = 53.62

Т77 = 46.00

Т78 = 44.32

Т79 = 58.64

Т80 = 70.53

Т81 = 52.22

Т82 = 69.98

Т83 = 53.76

Т84 = 64.32

Т85 = 41.18

Т86 = 42.76

Т87 = 60.02

Т88 = 43.34

Т89 = 64.56

Т90 = 56.01

Обработка результатов измерений.

Выполним сортировку результатов с помощью внутренней функции Mathcad Sort(V):

Таблица 4 – отсортированные данные

Номер измерения

debug, с

realise, одинарная точность, с

realise, двойная точность, с

1

5.984

13.89

29.07

2

7.25

14.79

31.12

Продолжение таблицы 4

3

7.328

14.89

32.01

4

8.031

15.05

34.11

5

8.141

15.34

35.22

6

9.265

16.35

37.89

7

9.734

16.5

38.05

8

10.87

16.53

38.21

9

10.98

16.75

38.87

10

11.4

16.98

39.31

11

11.73

18.53

40.27

12

12.23

18.65

41.18

13

12.83

18.72

42.12

14

12.85

19.125

42.76

15

13.73

19.18

43.04

16

13.76

19.21

43.34

17

13.84

19.35

43.7

18

14.07

19.4

44.32

19

14.69

19.51

44.86

20

14.78

19.66

45

21

14.96

19.7

45

22

15.09

20.04

45.06

23

16

20.12

45.68

24

16.34

20.12

46

25

16.43

20.62

46.21

26

16.57

20.7

46.32

27

16.73

20.85

46.74

28

16.75

21.23

46.76

29

16.93

21.72

47.63

30

16.96

21.73

47.87

31

17

21.79

48.04

32

17.09

22.12

49.65

33

17.14

22.17

50.05

34

17.21

22.28

51.14

35

17.94

22.28

51.22

36

18.45

22.54

52.22

37

18.56

22.73

52.23

38

18.73

22.86

53.24

39

18.89

22.86

53.62

40

18.91

23.14

53.73

41

18.92

23.2

53.75

Продолжение таблицы 4

42

18.97

23.51

53.76

43

19.55

23.62

53.76

44

20.01

23.93

53.86

45

20.21

24.09

54.44

46

20.42

24.34

54.44

47

20.5

24.37

54.82

48

20.59

24.37

55.24

49

21

24.43

55.41

50

21.5

24.5

55.64

51

21.5

24.56

55.75

52

21.67

24.64

56.01

53

21.7

24.97

56.42

54

21.85

24.98

56.78

55

21.94

25.14

57.25

56

21.98

25.2

57.43

57

22.09

25.35

58.11

58

22.28

25.35

58.23

59

22.31

25.37

58.36

60

22.7

25.39

58.40

61

22.71

25.7

58.42

62

22.92

25.84

58.64

63

23.23

25.86

58.8

64

23.31

25.95

58.88

65

23.56

25.98

58.95

66

23.57

26.03

58.96

67

24.59

26.31

59.09

68

25.1

26.41

59.29

69

25.12

26.85

59.37

70

25.28

27.09

59.92

71

25.51

27.67

60.02

72

26.62

28.09

61.98

73

27.2

28.41

62.34

74

27.26

28.48

62.43

75

27.56

28.5

63.11

76

27.58

28.54

63.63

77

27.7

28.79

64.08

78

27.79

29.17

64.32

79

27.84

29.67

64.44

80

28.05

30.16

64.56

Продолжение таблицы 4

81

28.92

30.44

64.61

82

29.32

31.23

64.87

83

29.76

31.39

65.42

84

30.53

31.61

69.51

85

31.85

32

69.91

86

33.31

32

69.98

87

34.1

33.13

70.53

88

41.85

33.86

71.56

89

46.4

34.86

74.32

90

52.34

48.04

75.32

Соседние файлы в папке КМ4