НОВЫЕ АЛГОРИТМЫ БЫСТРОЙ ДИАГОНАЛИЗАЦИИ ВЕЩЕСТВЕННЫХ СИММЕТРИЧНЫХ МАТРИЦ.

Автор: Сиголаев Юрий Федорович (Санкт-Петербург). E-mail: y_sigolaev@hotmail.com  

Последняя редакция: 15 июня, 2007 (адрес страницы для процессора Core 2 Duo: http://www.thesa-store.com/products/ )

     За последнее десятилетие скорость обработки информации персональными компьютерами существенно возросла. В связи с этим становится актуальной задача качественной переработки большинства алгоритмов, при решении которой необходимо сгладить противоречие между 32-битовой архитектурой (налагающей существенные ограничения на объемы обрабатываемой информации) и возросшей скоростью процессоров.

   Мною разработан новый комплекс алгоритмов диагонализации плотных вещественных симметричных матриц, принимающий во внимание этот фактор. Будучи реализованным на алгоритмическом языке C, этот комплекс (SDIAG) имеет ряд важных преимуществ по сравнению с другими известными пакетами, в которых реализованы алгоритмы диагонализации:

Этих результатов удалось достичь благодаря решению фундаментальной проблемы численного анализа трехдиагональных матриц, разработке нового алгоритма векторного умножения и усовершенствованной реализации блочных методов для упакованных матриц. Часть алгоритмов использует поддержку  IEEE-арифметики и использует SSE2 для эффективности. Для сравнительного анализа использовался пакет Intel MKL ввиду общего источника кода - пакета LAPACK.

    Использование новых алгоритмов векторного умножения позволяет говорить о неэффективности жемчужины пакета Intel MKL - процедуры нахождения полного спектра симметричной матрицы DSYEVD Intel MKL (пункты 1.1, 3.1 и 4).

    Усовершенствован классический алгоритм Pal-Walker-Kahan'а (п. 5).

    Корректность кода SDIAG установлена в рамках средств тестирования, включенных в пакет CLAPACK (п. 8).

SDIAG также успешно выдержал все тесты, которые мне прислала фирма Intel.

   Достаточно полное тестирование программы диагонализации произведено с помощью квантовохимической программы GAMESS [12], в которую с разрешения M.W. Schmidt'а она была включена. Критерием достоверности полученных результатов служит их совпадение с результатами расчетов по известной своим быстродействием программе PC GAMESS [13].

  С новыми результатами, которые свидетельствуют о прорыве в одной из самых интересных областей численного анализа как с теоретической, так и с прикладной точек зрения, можно ознакомиться также в статьях [9, 10, 11].

 

Все замечания и предложения просьба присылать по адресу: y_sigolaev@hotmail.com

Tel/Fax:  7(812)2691898

Назначение программы.

 

   Существенный рост скорости вычислений персональных компьютеров позволяет значительно увеличить порядок диагонализируемых матриц при относительно скромных затратах процессорного времени, чему, однако, препятствует одно существенное обстоятельство. 32-битовая архитектура налагает серьезные ограничения на порядок диагонализируемых матриц, т.к. все точные быстродействующие современные методы диагонализации требуют больших дополнительных затрат оперативной памяти. Примитивный путь решения этой проблемы - использование многопроцессорных кластеров.  Мною предложен иной подход, основанный на адаптации существующих алгоритмов к современным условиям и разработке новых алгоритмов для преодоления ограничений 32-битовой архитектуры.

   Отметим, что алгебраическая проблема собственных значений и собственных векторов является ключевой во многих научных и прикладных задачах.

    Программа позволяет:

на компьютере с 2 GB RAM диагонализировать матрицы вплоть до размера 22000×22000 (15000×15000 с 1 GB RAM, 11500×11500 с 512 MB RAM, 7500×7500 с 256 MB RAM) при значительном сокращении времени диагонализации по сравнению с самыми известными альтернативными подходами. При этом память используется только для хранения информации размером немногим более половины квадратной матрицы. Один из наиболее известных и, пожалуй, самый лучший на сегодняшний день The divide and conquer алгоритм позволяет диагонализировать матрицы размером менее 9000×9000 на компьютере с 2 GB RAM. При использовании The divide and conquer алгоритма для нахождения только части собственных векторов максимальный размер диагонализируемых матриц сокращается до размеров менее 8000×8000 на компьютере с 2 GB RAM.

   Методы, использованные для нахождения собственных векторов симметричной трехдиагональной матрицы, имеют строго квадратичную сходимость, и вместе с тем не требуют дополнительных затрат оперативной памяти.

   Алгоритмы, реализованные мною для  симметричной трехдиагональной матрицы, являются развитием классических идей (см. "Алгебраическая проблема собственных значений" Дж.Х. Уилкинсона). Впервые они были включены в квантовохимическую  программу [1], в течение ряда лет применявшуюся для исследования электронной структуры молекул [2-8]. В настоящей работе эти алгоритмы получили дальнейшее развитие и опробованы мною в известной квантовохимической  программе GAMESS (см. п. 7 и статьи [9, 10, 11]).

   Приходится признать, что реализация алгоритмов BLAS в Intel MKL неэффективна (см. табл. 1 и 8). Это относится прежде всего к таким функциям как DSYMV Intel MKL, DSYR2K Intel MKL и DGEMM Intel MKL, определяющих в основном время трехдиагонализации и перемножения векторов.

    Моя программа частично основана на замечательном исходном коде пакета LAPACK, который, как следует из выше изложенного, основательно переработан при сохранении всех его достоинств.

   SDIAG приводит к существенной экономии оперативной памяти в прикладных задачах (см. пункты 3.2 и 7, а также статьи [9, 10, 11]).

  Результаты сравнения.

Я сравнивал  полученные мною результаты с результатами из известного пакета Intel MKL (Package ID: w_mkl_b_8.0.005 и w_mkl_p_8.1.014).

1.1 Моя программа трехдиагонализации работает с упакованными матрицами, требует в 2 раза меньше памяти, чем DSYTRD Intel MKL (реализация метода Хаусхолдера для квадратной матрицы с блочной обработкой) и значительно опережает ее по скорости (процессор P4 3.6 GHz (Processor 560), Data cache size : L1 16 KB, L2 1024 KB, L3 0 KB, FSB 800 MHz, Motherboard:  P5AD2-E Premium, DDR2 533 MHz 2GB, ОС Windows XP Professional SP2). Результаты сравнения приведены в табл. 1. Разрыв в скоростях определяется усовершенствованной реализацией блочных методов для упакованных матриц. (Примечание: размер блока для DSYTRD Intel MKL зависит от размера выделяемой дополнительной оперативной памяти. Для рассматриваемых матриц он равен 32).

ТАБЛИЦА 1

n t (sec) Δt (sec) Δt (%)   n t (sec) Δt (sec) Δt (%)
SDIAG DSYTRD
Intel    MKL 8.1
SDIAG DSYTRD
Intel     MKL 8.1

1000

2000

3000

4000

5000

6000

7000

8000

9000

10000

11000

0.41

2.9

9.5

22.0

42.2

72.2

113.6

168.7

238.6

 326.2

 432.7

 0.58

4.3

 13.8

32.2

61.9

106.3

167.6

249.9

353.8

 484.5

 627.3

0.17

1.4

4.3

10.2

19.6

34.0

53.8

80.8

114.5

157.3

193.2

41.5

48.3

45.2

46.4

46.7

47.2

47.5

48.1

48.3

48.5

45.0

 

12000

13000

14000

15000

16000

17000

18000

19000

20000

21000

22000

 560.1

710.3

885.1

1084

1313

1572

1864

2189

2550

2954

3402

 832.8

 1056

 1306

 1616

1968

----

----

----

----

----

----

270.8

343.3

417.8

528

650

----

----

----

----

----

----

48.7

48.7

47.6

49.1

49.9

----

----

----

----

----

----

1.2 Intel MKL содержит алгоритмы трехдиагонализации упакованных матриц, но они чрезвычайно неэффективны. Результаты сравнения см. в табл. 2.

ТАБЛИЦА 2

n t (sec) Speed ratio   n t (sec) Speed ratio
SDIAG DSPTRD
Intel     MKL 8.1
SDIAG DSPTRD
Intel     MKL 8.1

1000

2000

3000

4000

5000

0.41

2.9

9.5

22.0

42.3

0.89

7.1

23.9

56.4

110.1

2.17

2.45

2.52

2.56

2.60

 

6000

7000

8000

9000

10000

72.3

113.8

169.1

239.3

 327.2

189.6

300.8

450.0

640.7

882.1

2.62

2.64

2.66

2.68

2.70

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

    Рассмотрим матрицу  W-2n+1, все собственные значения которой хорошо отделены:

 

αi = n + 1 - i (i = 1, ..., n+1)
αi = n + 1 - i (i = n+2, ..., 2n+1)
βi =1 (i = 2, ..., 2n+1)

 

Пример взят из монографии "Алгебраическая проблема собственных значений" Дж.Х. Уилкинсона.

С помощью SDIAG при нахождении всех собственных значений и собственных векторов матрицы W-2n+1 были получены следующие результаты:

ТАБЛИЦА 3

Matrix  order

t (sec)

 

Matrix order

t (sec)

1001

2001

3001

4001

5001

6001

7001

8001

9001

10001

11001

0.23

1.5

3.4

6.0

9.4

13.5

18.6

24.0

31.0

38.3

46.9

 

12001

13001

14001

15001

16001

17001

18001

19001

20001

21001

22001

56.6

66.1

77.1

88.6

101.3

115.1

130.5

146.5

161.0

177.6

199.7

 

2.2  Если все собственные значения квазивырождены, время вычислений полного спектра возрастает от 2% до 30%.

     Рассмотрим матрицу W+2n+1:

 

αi = n + 1 - i (i = 1, ..., n+1)
αi = i - n - 1 (i = n+2, ..., 2n+1)
βi =1 (i = 2, ..., 2n+1)

Почти все ее собственные значения W+2n+1 попарно квазивырождены. Relatively Robust Representations алгоритмы нахождения собственных значений и собственных векторов симметричной трехдиагональной матрицы, на которые возлагались большие надежды, дают для матрицы W+2n+1 очень плохие собственные векторы. Результаты сравнения приведены в табл. 4.

ТАБЛИЦА 4

Matrix order t (sec) Max modulus of scalar dot of contiguous vectors   Matrix order t (sec) Max modulus of scalar dot of contiguous vectors
DSTEGR Intel     MKL 8.1 SDIAG DSTEGR Intel     MKL 8.1 SDIAG DSTEGR Intel     MKL 8.1

SDIAG

DSTEGR Intel     MKL 8.1

SDIAG

1001

2001

3001

4001

5001

0.9

3.9

9.0

15.9

25.4

 0.44

 1.9

 4.2

7.2

11.5

 9.991e-1

 9.991e-1

 9.997e-1

9.997e-1

9.997e-1

 2.1e-16

 2.1e-16

 1.5e-16

2.7e-16

1.9e-16

 

6001

7001

8001

9001

10001

 36.2

 50.1

 64.9

 82.5

102.8

 16.4

 22.7

 29.1

 37.4

 46.0

 9.997e-1

 9.997e-1

 9.997e-1

9.997e-1

9.997e-1

1.7e-16

 2.2e-16

 2.4e-16

1.8e-16

2.3e-16

2.3 Рассмотрим симметричную трехдиагональную матрицу с диагональными элементами, равными 0.1, и недиагональными элементами, равными 2.3e-17. Все собственные значения этой матрицы квазивырождены и равны 0.1. DSTEGR Intel MKL не справляется с этой матрицей из-за внутренней ошибки (info = 2). Результаты моих вычислений по времени совпадают с результатами табл. 4 с точностью до 5%. Собственные векторы ортогональны с рабочей точностью.

3.1  Использование при завершении метода Хаусхолдера полного спектра трехдиагональной матрицы приводит к скачкообразному уменьшению времени расчета собственных векторов исходной матрицы из собственных векторов трехдиагональной матрицы. Эти результаты достигнуты благодаря применению нового алгоритма векторного умножения. Результаты сравнения приведены в табл. 5.

ТАБЛИЦА 5

n t (sec)  Δt (%)
SDIAG DORMTR
Intel  MKL 8.0

1000

2000

3000

4000

5000

6000

7000

8000

9000

10000

11000

12000

13000

0.37

2.6

8.7

20.0

38.9

66.5

105.0

155.3

221.2

300.8

401.1

519.5

685.7

 0.52

3.8

12.3

29.1

55.6

95.6

153.7

229.5

332.4

456.7

----

----

----

 40.5

 46.2

41.4

45.5

42.9

43.8

46.4

47.8

50.3

51.8

----

----

----

 

3.2 Т.к. собственные векторы трехдиагональной матрицы вычисляются по отдельности и независимо от распределения собственных значений [п. 2.1], то их можно находить небольшими блоками, перемножать каждый блок на матрицу, полученную в результате трехдиагонализации и сохранять его на внешнем носителе информации в случае недостатка оперативной памяти. Такая организация вычислений позволяет существенно экономить память RAM. Последняя используется только для хранения информации размером немногим более половины квадратной матрицы. Поэтому оказывается возможной диагонализация матриц 22000×22000 с 2 GB RAM (15000×15000 с 1 GB RAM, 11500×11500 с 512 MB RAM, 7500×7500 с 256 MB RAM). Скорость вычислений при этом выше, чем у DORMTR Intel MKL - процедуры завершения метода Хаусхолдера. Результаты сравнения см. в табл. 6. (Примечание: размер блока для DORMTR Intel MKL зависит от размера выделяемой дополнительной оперативной памяти. Для рассматриваемых матриц он равен 32).

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

ТАБЛИЦА 6

n t (sec)   n t (sec)
SDIAG DORMTR
Intel    MKL 8.0
SDIAG DORMTR
Intel     MKL 8.0

1000

2000

3000

4000

5000

6000

7000

8000

9000

10000

11000

0.48

3.4

11.2

26.2

50.8

86.9

137.2

204.0

289.0

395.9

 523.7

0.52

3.8

12.3

29.1

55.6

95.6

153.7

229.5

332.4

456.7

----

 

12000

13000

14000

15000

16000

17000

18000

19000

20000

21000

22000

 677.0

858.3

1070

1314

1593

1909

2265

2663

3105

3593

4131

----

----

----

----

----

----

----

----

----

----

----

  3.3 Как следует из табл. 7, использование DORMTR Intel MKL для организации вычислений, указанной в п. 3.2, неэффективно.

ТАБЛИЦА 7

n t (sec)  Δt (%)
SDIAG DORMTR
Intel  MKL 8.0

1000

2000

3000

4000

5000

6000

7000

8000

9000

10000

0.48

3.4

11.2

26.2

50.8

86.9

137.2

204.0

289.0

395.9

 0.83

6.5

22.2

52.5

106.3

179.2

286.9

426.1

609.5

836.9

 72.9

 91.2

98.2

100.4

109.3

106.2

109.1

108.9

110.9

111.4

3.4 Наилучшие результаты, которых можно достичь, используя Intel MKL для организации моего метода вычислений по завершению метода Хаусхолдера, приведены в табл. 8. Из нее следует, что алгоритмы Intel MKL неэффективны для организации вычислений, указанной в п. 3.2. Разрыв в скоростях определяется усовершенствованной реализацией блочных методов для упакованных матриц.

ТАБЛИЦА 8

n t (sec)  Δt (%)
SDIAG Intel MKL 8.0

1000

2000

3000

4000

5000

6000

7000

8000

9000

10000

0.48

3.4

11.2

26.2

50.8

86.9

137.2

204.0

289.0

395.9

 0.62

4.6

16.4

38.4

74.7

133.2

206.7

306.7

439.4

596.8

 29.2

35.3

 46.4

46.6

47.0

53.3

50.7

50.3

52.0

50.7

3.5 Intel MKL содержит алгоритмы завершения метода Хаусхолдера для упакованных матриц, но они чрезвычайно неэффективны. Результаты сравнения см. в табл. 9.

ТАБЛИЦА 9

n t (sec) Speed ratio
SDIAG DOPMTR
Intel     MKL 8.0

1000

2000

3000

4000

5000

0.37

2.6

8.7

20.0

38.9

2.8

 22.0

 69.9

163.8

317.0

7.6

8.5

8.0

8.2

8.1

4.  Рассмотрим упакованную симметричную теплицеву матрицу:

Aij = arcsin(1 / (i - j + 1))/(i - j + 1)3 (i , j = 1, 2, ..., n; i >= j)

Применение алгоритмов, описанных в пунктах 1.1, 2 и 3.1, к решению полной алгебраической проблемы для этой матрицы, приводит к результатам, которые говорят о неэффективности DSYEVD Intel MKL (по существу, единственной на данный момент процедуре, сочетающей в себе скорость и точность расчета, но требующей непомерных затрат оперативной памяти).

ТАБЛИЦА 10

n t (sec)  Δt (%)
SDIAG DSYEVD
Intel  MKL 8.1

3000

4000

5000

6000

7000

8000

9000

21.4

48.0

90.4

151.9

237.2

349.8

492.8

 34.3

78.9

149.7

254.5

400.1

593.9

862.4

 60

 64

66

68

69

70

75

 

5.1 Модифицирована процедура вычисления всех собственных значений симметричной трехдиагональной матрицы, использующая усовершенствованный мною вариант QL или QR алгоритма Pal-Walker-Kahan'а и позволяющая находить спектр матрицы значительно быстрей  DSTERF Intel MKL.

    Рассмотрим матрицу:

 

αi = sin(sqrt(sqrt(i - 1))) (i = 1, 2, ..., n)
βi =0.5 (i = 1, 2, ..., n - 1)

  

Результаты сравнения  приведены в табл. 11.

ТАБЛИЦА 11

n t (sec) Speed ratio   n t (sec) Speed ratio
SDIAG DSTERF
Intel    MKL 8.1
SDIAG DSTERF
Intel    MKL 8.1

10000

20000

30000

40000

50000

60000

  2.0

7.8

17.2

30.4

47.3

68.0

5.5

22.1

55.0

94.6

145.8

211.2

2.8

2.8

3.2

3.1

3.1

3.1

 

70000

80000

90000

100000

110000

120000

92.1

120.5

153.0

189.7

230.4

275.0

 287.7

 370.4

 465.7

 587.1

707.9

851.2

3.1

3.1

3.0

3.1

3.1

3.1

5.2 Рассмотрим трехдиагональную матрицу с диагональными элементами, равными 2, и недиагональными элементами, равными 1. Собственные значения этой матрицы равны 4*sin2[π*k/2*(n + 1)] (k = 1, 2, ..., n). Построим вектор, равный разности векторов точного и приближенного решений. Его нормы l и l1, характеризующие точность приближенного решения, свидетельствуют о более высокой точности результатов SDIAG (см. табл. 12 и 13).

ТАБЛИЦА 12

n l (l)Intel /(l)SDIAG   n l (l)Intel /(l)SDIAG
SDIAG
 
DSTERF
Intel    MKL 8.1
SDIAG DSTERF
Intel    MKL 8.1

10000

20000

30000

40000

50000

60000

1.8e-15

3.0e-15

4.1e-15

5.8e-15

4.7e-15

6.7e-15

7.5e-15

1.3e-14

1.5e-14

2.0e-14

1.4e-14

2.4e-14

4.2

4.3

3.7

3.4

3.0

3.6

 

70000

80000

90000

100000

110000

120000

2.7e-15

4.2e-15

3.9e-15

2.0e-14

9.6e-15

6.2e-15

 2.6e-14

 2.7e-14

 2.5e-14

 2.6e-14

3.1e-14

3.4e-14

9.6

6.4

6.4

1.3

3.2

5.5

ТАБЛИЦА 13

n l1/n (l1)Intel /(l1)SDIAG   n l1/n (l1)Intel /(l1)SDIAG
SDIAG
 
DSTERF
Intel    MKL 8.1
SDIAG DSTERF
Intel    MKL 8.1

10000

20000

30000

40000

50000

60000

2.0e-16

2.0e-16

2.0e-16

2.4e-16

2.2e-16

2.0e-16

5.2e-16

6.0e-16

6.0e-16

6.0e-16

5.5e-16

6.2e-16

2.6

3.0

3.0

2.5

2.5

3.1

 

70000

80000

90000

100000

110000

120000

2.1e-16

2.2e-16

2.2e-16

4.1e-16

2.4e-16

2.3e-16

 5.7e-16

 5.7e-16

 5.9e-16

 6.1e-16

6.5e-16

6.0e-16

2.7

2.6

2.7

1.5

2.7

2.6

 

6. Ниже приведен пример применения DSTEVD Intel MKL к матрице из п. 5.2, который демонстрирует кубическую природу алгоритма The divide and conquer:

ТАБЛИЦА 14

  n

t (sec) Speed ratio  

  n

t (sec) Speed ratio
SDIAG DSTEVD
Intel MKL 8.1
SDIAG DSTEVD
Intel MKL 8.1
1001

2001

3001

4001

5001

0.37

1.4

3.2

5.8

9.0

0.47

2.6

7.7

16.7

31.5

1.3

1.9

2.4

2.9

3.5

 

6001

7001

8001

9001

 

12.9

17.6

23.1

29.9

 

52.1

81.7

118.7

167.7

 

4.0

4.6

5.1

5.6

 

Заметим, что нечетность матрицы здесь существенна.

  7. Квантовохимические расчеты больших молекул полуэмпирическими методами (PM3, AM1 и др.) на одном компьютере в условиях существенно возросшей за последнее десятилетие скорости обработки информации лимитируются в основном временем и ресурсами памяти, затрачиваемым на многократную диагонализацию матрицы Фока. Для того, чтобы раздвинуть границы применимости персонального компьютера к квантовохимическому исследованию многоатомных химических соединений, алгоритмы диагонализации, включенные в оригинальную версию программы GAMESS [12], заменены на SDIAG и с ее помощью были произведены расчеты методом PM3 кластера, состоящего из 14 молекул фуллерена C60 с параметрами гранецентрированной решетки кристалла фуллерена (840 атомов). Порядок диагонализируемых матриц 3360. При этом каждая молекула фуллерена обладала симметрией икосаэдра Ih, а симметрия всей системы понижена до Ci. Симметрия системы при расчете не использовалась. Вследствие относительно слабого взаимодействия между молекулами фуллерена появляется большое число квазивырожденных энергетических уровней и это делает тестирование собственных векторов более жестким. Для экономии оперативной памяти алгоритмы SDIAG в процедуре определения "самосогласованного поля" (SCF) совмещены с усовершенствованным алгоритмом расчета матрицы плотности так, что отпала необходимость в хранении матрицы собственных векторов матрицы Фока.

  Применение алгоритмов SDIAG в настоящей работе сократило время, затрачиваемое на одну итерацию процедуры SCF при расчете кластера С840 до 28.9 секунд, из которых 25.0 секунд приходится на диагонализацию матрицы Фока.

  Использование в процедуре перемножения векторов сразу всех векторов, необходимых для построения матрицы плотности, сокращает время, затрачиваемое на одну итерацию процедуры SCF до 27.1 секунды, из которых 23.1 секунды приходится на диагонализацию матрицы Фока.

 

   8. Корректность кода SDIAG установлена в рамках средств тестирования, включенных в пакет CLAPACK. Для функций SDIAG был реализован соответствующий интерфейс. Результаты тестирования SDIAG совпадают с результатами тестирования исходного кода пакета CLAPACK:

 

 Tests of the Symmetric Eigenvalue Problem routines
LAPACK VERSION 3.0, released June 30, 1999
The following parameter values will be used:
M: 0 1 2 3 5 20
N: 0 1 2 3 5 20
NB: 1 3 3 3 10
NBMIN: 2 2 2 2 2
NX: 1 0 5 9 1


Relative machine underflow is taken to be .222507-307
Relative machine overflow is taken to be .179769+309
Relative machine precision is taken to be .111022E-15


Routines pass computational tests if test ratio is less than 50.00

DST routines passed the tests of the error exits (147 tests done)


SEP: NB = 1, NBMIN = 2, NX = 1
All tests for DST passed the threshold ( 4662 tests run)
All tests for DST drivers passed the threshold ( 14256 tests run)


SEP: NB = 3, NBMIN = 2, NX = 0
All tests for DST passed the threshold ( 4662 tests run)
All tests for DST drivers passed the threshold ( 14256 tests run)

SEP: NB = 3, NBMIN = 2, NX = 5
All tests for DST passed the threshold ( 4662 tests run)
All tests for DST drivers passed the threshold ( 14256 tests run)

SEP: NB = 3, NBMIN = 2, NX = 9
All tests for DST passed the threshold ( 4662 tests run)
All tests for DST drivers passed the threshold ( 14256 tests run)

SEP: NB = 10, NBMIN = 2, NX = 1
All tests for DST passed the threshold ( 4662 tests run)
All tests for DST drivers passed the threshold ( 14256 tests run)

End of tests
Total time used = 1.53 seconds


      Список литературы

[1] Ю.Ф. Сиголаев, С.Г. Семенов. Программа расчета электронной структуры и спектроскопических характеристик молекул в приближении ППДП на ЕС ЭВМ. Вестник ЛГУ. 1985. 11. С. 113-114.

[2] Ю.Ф. Сиголаев, С.Г. Семенов, В.О. Рейхсфельд Теорет. и эксперим. химия. 1983. Т. 19, № 3. С. 348-351.

[3] Ю.Ф. Сиголаев, С.Г. Семенов, В.О. Рейхсфельд. Теорет. и эксперим. химия. 1984. Т. 20, № 4. С. 482-485.

[4] С.Г. Семенов, Ю.Ф. Сиголаев.  Коорд. химия. 1985. Т. 11, № 12. С. 1635-1638.

[5] С.Г. Семенов, Ю.Ф. Сиголаев, В.В. Редченко, Я.Ф. Фрейманис. ЖОХ. 1985. Т. 55, № 2. С. 401-404.

[6] S.G.Semenov, Yu.F. Sigolaev, S.M. Shevchenko. Croatica Chemica Acta. 1988. Vol. 61, No. 1. P. 73-80.

[7] С.Г. Семенов, Ю.Ф. Сиголаев. Коорд. химия. 1988. Т. 14,  № 12. С. 1636-1640.

[8] Ю.Ф. Сиголаев, С.Г. Семенов, В.О. Рейхсфельд, В.К. Бельский.  Теорет. и эксперим. химия. 1990. Т. 26, № 2. С. 221-224.

[9] С.Г. Семенов, Ю.Ф. Сиголаев. Компьютерное моделирование структуры больших молекул. I. Молекула С60Н12 и кластер С852. ЖОХ. 2006. Т. 76, № 6. С. 1006-1009.

[10] С.Г. Семенов, Ю.Ф. Сиголаев. Компьютерное моделирование структуры больших молекул. II. Кластер С1500. ЖОХ. 2006. Т. 76, № 11. С. 1809-1815.

[11] С.Г. Семенов, Ю.Ф. Сиголаев. Компьютерное моделирование структуры больших молекул. III. Локальные возбуждения в структуре 2D полимеров С60(XII) и С60(VIII). ЖОХ. 2007. Т. 77, № 5. С. 780-785.

[12] M.W. Schmidt, K.K. Baldridge, J.A. Boatz et al. J. Comput. Chem. 1993. Vol. 14, No. 9. P. 1347.

[13] A.A. Granovsky. http: // classic.chem.msu.su/gran/gamess/index.html.