Page 1 of 1

changing dsyev call to dsyevd call

PostPosted: Wed Sep 21, 2011 6:15 pm
by kumman87
Hi,

I tried to call dsyevd instead of dsyev call.
I am bale to successfully link and compile it!!
But while i try to run the module with input i am getting an error stating
xerbla:double: lapack error
illegal 7th parameter for DOQMQR module


I found that DOQMQR is called from Dsyevd module and 7 th parameter is LDA
I am passing LDA= N while calling dysevd.
I also defined iwork and liwork (which are not needed for dsyev call)

Does some one faced similar issue?

How to convert the call dsyev function call to dsyevd function call?
please help me out
regards
Selva

Re: changing dsyev call to dsyevd call

PostPosted: Fri Sep 23, 2011 11:53 am
by admin
Do you have a piece of code we could look at?
Are you coding in C or Fortran?
Julie

Re: changing dsyev call to dsyevd call

PostPosted: Tue Oct 11, 2011 7:05 pm
by kumman87
Hey
I am coding in FORTRAN.

My code:
LWORK=2*n*n+6*n+1
LIWORK=5*n+3
status=ma_push_get(MT_DBL, n*n,
$ 'diag_std_seq:a', l_a, k_a)
status=status.and.ma_push_get(MT_DBL, n*n,
$ 'diag_std_seq:v', l_v, k_v)
call ga_to_SL(g_a,n,n,n,n,dbl_mb(k_v), n, n,n)
write(*,*) 'here before dsyevd'
call dsyevd('V','L',n, dbl_mb(k_v),n,
$ evals, dbl_mb(k_a),LWORK,IWORK,LIWORK, info)


Please refer below for my error:

** On entry to DSTEQR parameter number 2 had an illegal value
------------------------------------------------------------------------
xerbla:double: lapack error 911
------------------------------------------------------------------------
------------------------------------------------------------------------
current input line :
40: task tddft energy
------------------------------------------------------------------------
------------------------------------------------------------------------
There is an error in the specified basis set
------------------------------------------------------------------------
For more information see the NWChem manual at
http://www.nwchem-sw.org/index.php/NWChem_Documentation


For further details see manual section:




0:0:xerbla:double: lapack error:: 911
(rank:0 hostname:compute-0-15.local pid:22449):ARMCI DASSERT fail. armci.c:ARMCI_Error():260 cond:0
Last System Error Message from Task 0:: Inappropriate ioctl for device
application called MPI_Abort(MPI_COMM_WORLD, 0) - process 0


Background:
I am try to call dsyevd instead of dsyev function call!!

Regards
Selva

Re: changing dsyev call to dsyevd call

PostPosted: Tue Oct 11, 2011 7:58 pm
by Julien Langou
Do you know how big n is?
The second parameter of DSTEQR is n. So for it to be invalid while being inside DSYEVD means that there is probably a memory overwrite problem ... The value of n has changed (from valid to invalid)... This is not supposed to happen.

Besides affacting value to LWORK and LIWORK do you actually allocate space for WORK of size LWORK and space for IWORK of size LIWORK?

Julien.