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
Best,
Sieg

