changing dsyev call to dsyevd call

Post here if you have a question about linking your program with LAPACK or ScaLAPACK library

changing dsyev call to dsyevd call

Postby kumman87 » Wed Sep 21, 2011 6:15 pm

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
kumman87
 
Posts: 2
Joined: Wed Sep 21, 2011 6:05 pm

Re: changing dsyev call to dsyevd call

Postby admin » Fri Sep 23, 2011 11:53 am

Do you have a piece of code we could look at?
Are you coding in C or Fortran?
Julie
admin
Site Admin
 
Posts: 501
Joined: Wed Dec 08, 2004 7:07 pm

Re: changing dsyev call to dsyevd call

Postby kumman87 » Tue Oct 11, 2011 7:05 pm

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
kumman87
 
Posts: 2
Joined: Wed Sep 21, 2011 6:05 pm

Re: changing dsyev call to dsyevd call

Postby Julien Langou » Tue Oct 11, 2011 7:58 pm

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.
Julien Langou
 
Posts: 734
Joined: Thu Dec 09, 2004 12:32 pm
Location: Denver, CO, USA


Return to Linking Problem

Who is online

Users browsing this forum: No registered users and 2 guests