- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
Hello Everyone,
I use MKL 10.1 to solve sparse linear system. System is symmetric and positive definite but during phase 22 PARDISO fails with error code -1 and message is 'Error in PARDISO: zero or negative pivot, A is not SPD-matrix'
Can anyone help me to find the reason for this error? I have attached a part of code from my software and some statistical information printed by PARDISO. Please see the attachment. Please find the sparse matrix at the end of this mail.
Thanks,
Ashish
rowIndex
1
6
11
16
22
26
32
38
43
47
52
56
58
60
61
columns
1 2 3 4 6
2 4 5 6 7
3 4 5 6 8
4 5 6 7 8 10
5 7 8 10
6 7 8 9 10 11
7 8 9 10 11 12
8 9 10 11 13
9 11 12 13
10 11 12 13 14
11 12 13 14
12 14
13 14
14
values
4.564348 0.000000 0.000000 -3.042424 -1.521924
7.606774 -6.087562 0.000000 1.521212 -3.040423
7.606775 -6.088180 0.000000 1.521212 -3.039807
27.400923 -9.137043 -4.569465 -0.001010 -0.000393 1.525154
10.656405 1.522569 1.522878 -4.564809
2010.166597 -2000.278354 -2000.278046 -4.559016 1994.953937 3.043848
2010.168623 1994.954803 1.520567 -2000.279206 -1.525441 -3.042126
2010.168624 1.520258 -2000.279515 -1.526058 -3.042745
10.643689 -9.125497 0.000000 0.000000
2010.168919 -3.041526 1.520062 1.520062 -1.523076
27.376694 -6.081257 -6.080639 -3.040123
7.603322 0.000000
7.603322 0.000000
4.563199
I use MKL 10.1 to solve sparse linear system. System is symmetric and positive definite but during phase 22 PARDISO fails with error code -1 and message is 'Error in PARDISO: zero or negative pivot, A is not SPD-matrix'
Can anyone help me to find the reason for this error? I have attached a part of code from my software and some statistical information printed by PARDISO. Please see the attachment. Please find the sparse matrix at the end of this mail.
Thanks,
Ashish
rowIndex
1
6
11
16
22
26
32
38
43
47
52
56
58
60
61
columns
1 2 3 4 6
2 4 5 6 7
3 4 5 6 8
4 5 6 7 8 10
5 7 8 10
6 7 8 9 10 11
7 8 9 10 11 12
8 9 10 11 13
9 11 12 13
10 11 12 13 14
11 12 13 14
12 14
13 14
14
values
4.564348 0.000000 0.000000 -3.042424 -1.521924
7.606774 -6.087562 0.000000 1.521212 -3.040423
7.606775 -6.088180 0.000000 1.521212 -3.039807
27.400923 -9.137043 -4.569465 -0.001010 -0.000393 1.525154
10.656405 1.522569 1.522878 -4.564809
2010.166597 -2000.278354 -2000.278046 -4.559016 1994.953937 3.043848
2010.168623 1994.954803 1.520567 -2000.279206 -1.525441 -3.042126
2010.168624 1.520258 -2000.279515 -1.526058 -3.042745
10.643689 -9.125497 0.000000 0.000000
2010.168919 -3.041526 1.520062 1.520062 -1.523076
27.376694 -6.081257 -6.080639 -3.040123
7.603322 0.000000
7.603322 0.000000
4.563199
Enlace copiado
7 Respuestas
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
error code == -1 means the input inconsistent. Please switch on the matrix checker (iparm(27) ) andPARDISO will check integer arrays ia and ja.
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
It is rarely possible to find errors if you give only fragments of code. In particular, declarations of arrays and variables are most often where errors are made.
By adapting the MKL example pardiso_sym_c.c, with data from your input matrix, I found that Pardiso handles the matrix without error, and that the matrix is positive definite.
The modified file is attached.
By adapting the MKL example pardiso_sym_c.c, with data from your input matrix, I found that Pardiso handles the matrix without error, and that the matrix is positive definite.
The modified file is attached.
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
Fedorov,
Thanks for reply.
I switched matrix checker on but I do not see output of this check. Where can I get output from matrix checker?
Thanks,
Ashish
Thanks for reply.
I switched matrix checker on but I do not see output of this check. Where can I get output from matrix checker?
Thanks,
Ashish
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
Note that, in C, you need to specify iparm[26] = 1 since C uses zero based array indices.
You will see output from the matrix checker only if there are errors. To test this, present the first row of the matrix in unsorted order, i.e., instead of
1,2,3,4,6,
give
1,2,3,6,4,
and you will see
*** Error in PARDISO (incorrect input matrix ) error_num= 24
*** Input check: j=4, ja(j)=6, ja(j+1)=4 are incompatible
ERROR during symbolic factorization: -1
You will see output from the matrix checker only if there are errors. To test this, present the first row of the matrix in unsorted order, i.e., instead of
1,2,3,4,6,
give
1,2,3,6,4,
and you will see
*** Error in PARDISO (incorrect input matrix ) error_num= 24
*** Input check: j=4, ja(j)=6, ja(j+1)=4 are incompatible
ERROR during symbolic factorization: -1
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
Hi mecej4,
Thanks for quick reply.
That means sparse matrix structure is correct. I too solved this matrix by modifying MKL sample program. Its strange that it did not give any such error and easily factorised the matrix in phase 22. After you pointed out, I made sure that all the data and data type are same in both MKL sample program and my software.
As a matter of fact, I have been using this code for solving sparse system for quite some time. Recently, I made changes to add few more terms in coefficient matrix. Since, then I have been getting such error.
Can you suggest some way to get more information on what is going wrong?
Thanks,
Ashish
Thanks for quick reply.
That means sparse matrix structure is correct. I too solved this matrix by modifying MKL sample program. Its strange that it did not give any such error and easily factorised the matrix in phase 22. After you pointed out, I made sure that all the data and data type are same in both MKL sample program and my software.
As a matter of fact, I have been using this code for solving sparse system for quite some time. Recently, I made changes to add few more terms in coefficient matrix. Since, then I have been getting such error.
Can you suggest some way to get more information on what is going wrong?
Thanks,
Ashish
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
>Can you suggest some way to get more information on what is going wrong?
Begin by giving a complete, compilable, example where you expect a solution but experience a failure. The code fragment that you provided earlier is not enough.
Note that changing the value of even one element of a positive definite matrix can make the resulting matrix indefinite.
Begin by giving a complete, compilable, example where you expect a solution but experience a failure. The code fragment that you provided earlier is not enough.
Note that changing the value of even one element of a positive definite matrix can make the resulting matrix indefinite.
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
Hi mecej4,
I found that there was a problem while assembling the matrix which made it indefinite. I had a print statement in my code to output content which was truncating the double till 6 digit places after decimal. And this made matrix look like positive definite. I printed some more decimal places in matrix and found that it is not positive definite.
Here is content
{4.564347977772266, 0.000000000000000, 0.000000000000000, -3.042423867081960, -1.521924110690306, 7.606773629731492, -6.087562211441041, 0.000000000000000, 1.521211933540980, -3.040423351831432, 7.606774711348293, -6.088179968041103, 0.000000000000000, 1.521211933540980, -3.039806676848170, 27.400923272820172, -9.137043110816320, -4.569465236748068, -0.001010321139017, -0.000392564538955, 1.525154006986292, 10.656404978781763, 1.522569172179540, 1.522878050479571, -4.564809090624554, 2010.166596681374100, -2000.278354385391800, -2000.278045507091700, -4.559016394738700, 1994.953937031492400, 3.043848054711660, 2010.168622855250500, 1994.954802754721400, 1.520566788717270, -2000.279206463460500, -1.525440582246566, -3.042126466799454, 2010.168624264110300, 1.520257910417239, -2000.279515341760500, -1.526058338846628, -3.042744550642403, 10.643689148584869, -9.125497452980678, 0.000000000000000, 0.000000000000000, 2010.168918568560700, -3.041526141973496, 1.520061628147761, 1.520061628147761, -1.523075825515666, 27.376693628491292, -6.081256833730062, -6.080639077130000, -3.040123256295522, 7.603321672381755, 0.000000000000000, 7.603321999624642, 0.000000000000000, 4.563199081811187}
Thanks for all your help,
Ashish
I found that there was a problem while assembling the matrix which made it indefinite. I had a print statement in my code to output content which was truncating the double till 6 digit places after decimal. And this made matrix look like positive definite. I printed some more decimal places in matrix and found that it is not positive definite.
Here is content
{4.564347977772266, 0.000000000000000, 0.000000000000000, -3.042423867081960, -1.521924110690306, 7.606773629731492, -6.087562211441041, 0.000000000000000, 1.521211933540980, -3.040423351831432, 7.606774711348293, -6.088179968041103, 0.000000000000000, 1.521211933540980, -3.039806676848170, 27.400923272820172, -9.137043110816320, -4.569465236748068, -0.001010321139017, -0.000392564538955, 1.525154006986292, 10.656404978781763, 1.522569172179540, 1.522878050479571, -4.564809090624554, 2010.166596681374100, -2000.278354385391800, -2000.278045507091700, -4.559016394738700, 1994.953937031492400, 3.043848054711660, 2010.168622855250500, 1994.954802754721400, 1.520566788717270, -2000.279206463460500, -1.525440582246566, -3.042126466799454, 2010.168624264110300, 1.520257910417239, -2000.279515341760500, -1.526058338846628, -3.042744550642403, 10.643689148584869, -9.125497452980678, 0.000000000000000, 0.000000000000000, 2010.168918568560700, -3.041526141973496, 1.520061628147761, 1.520061628147761, -1.523075825515666, 27.376693628491292, -6.081256833730062, -6.080639077130000, -3.040123256295522, 7.603321672381755, 0.000000000000000, 7.603321999624642, 0.000000000000000, 4.563199081811187}
Thanks for all your help,
Ashish
Responder
Opciones de temas
- Suscribirse a un feed RSS
- Marcar tema como nuevo
- Marcar tema como leído
- Flotar este Tema para el usuario actual
- Favorito
- Suscribir
- Página de impresión sencilla