НОВЫЕ АЛГОРИТМЫ БЫСТРОЙ ДИАГОНАЛИЗАЦИИ ВЕЩЕСТВЕННЫХ СИММЕТРИЧНЫХ МАТРИЦ.
Автор: Сиголаев Юрий Федорович (Санкт-Петербург). E-mail: y_sigolaev@hotmail.com
Последняя редакция: 15 июня, 2007 (адрес страницы для процессора Core 2 Duo: http://www.thesa-store.com/products/ )
За последнее десятилетие скорость обработки информации персональными компьютерами существенно возросла. В связи с этим становится актуальной задача качественной переработки большинства алгоритмов, при решении которой необходимо сгладить противоречие между 32-битовой архитектурой (налагающей существенные ограничения на объемы обрабатываемой информации) и возросшей скоростью процессоров.
Мною разработан новый комплекс алгоритмов диагонализации плотных вещественных симметричных матриц, принимающий во внимание этот фактор. Будучи реализованным на алгоритмическом языке C, этот комплекс (SDIAG) имеет ряд важных преимуществ по сравнению с другими известными пакетами, в которых реализованы алгоритмы диагонализации:
заметное увеличение скорости расчетов;
значительная экономия оперативной памяти. Разрыв (шестикратный при нахождении всех собственных векторов и восьмикратный при нахождении части собственных векторов) между всеми точными быстродействующими современными методами диагонализации и предложенными мною алгоритмами настолько велик, что их актуальность очевидна и для 64-битовой архитектуры.
Этих результатов удалось достичь благодаря решению фундаментальной проблемы численного анализа трехдиагональных матриц, разработке нового алгоритма векторного умножения и усовершенствованной реализации блочных методов для упакованных матриц. Часть алгоритмов использует поддержку 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.5157.3 193.2 |
41.5 48.3 45.2 46.4 46.7 47.2 47.5 48.1 48.348.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.