Page 1 of 1

PDLAQR1 possible bug?

PostPosted: Tue Jul 30, 2013 3:34 pm
by siegyoung
Hello,

I recently ran routine pdlaqr1 and and noticed that when the matrix size is small, like N=200, not all processes get the right eigenvalues.
Code: Select all
       
       call pdlaqr1( .true., .true., N, 1, N, suba, desca, eigenr, eigeni, 1, N, subq, descq, work_query, -1, iwork_query, -1, info )
       scal_lwork =  work_query(1)
       scal_liwork = 200   !iwork_query(1)
       allocate( scal_iwork(1:scal_liwork), scal_work(1:scal_lwork))
       call pdlaqr1( .true., .true., N, 1, N, suba, desca, eigenr, eigeni, 1, N, subq, descq, scal_work, scal_lwork, scal_iwork, scal_liwork, info )
       deallocate( scal_work, scal_iwork)     
       write(*,'(10f15.5)') eigenr(1:10)

Results:
    Hessenberg form done, elapsed time is 0.00784922
    Form Q explicity
    Extract upper Hessenberg part of A
    Compute the Schur form
    0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
    669.52573 669.52573 669.47536 669.60219 669.60219 669.99080 669.89390 669.89390 669.78509 669.78509
    0.00000 0.00000 0.00000 0.00000 -0.00376 -0.00167 -0.00089 0.00355 0.00023 -0.00269
    0.00000 0.00000 0.00000 0.00000 0.00000 -0.03007 0.00000 0.00000 -0.15640 0.00000
Only the root (proc 0) get the eigenvalues (in blue). But if I enlarge the matrix size to 1000, all processors get the same eigenvalues. Also, I compared the results to the output of matlab schur.m. It seems that pdlaqr1 did not read out the eigenvalues correctly while pdlahqr produced the same eigenvalues consistent with matlab.


Best,
Sieg