Failure of Lapack when OpenMP directive Enabled

Failure of Lapack when OpenMP directive Enabled

criswu的头像

 

    I build a project (vs2010 + IVF)  calling Lapack subroutines, but when I enable process OpenMP directives( Generate parallel code), and i encounted the 

Debug Assertion Failed!

File:f:\dd\vctools\crt_bld\self_x86\crt\src\winsig.c 

Line: 417

Expression:(" Invalid signal or error",0)

program main
implicit none

     integer,parameter:: NMAX = 4000
     integer,parameter:: LWORK = 100*NMAX
     integer IPIV(NMAX)  
     complex WORK(LWORK)
     INTEGER LDA, INFO

     INTEGER maxedge ,error,ii

    Complex ,allocatable:: cmtx(:,:),crhs(:)

    maxedge = 1396

    allocate(cmtx(maxedge,maxedge),crhs(maxedge),stat=error)
    if(error .ne. 0)then
         print *,'Allocate cmtx and crhs failure'
         stop
    endif
    cmtx = (0.0,0.0)
    do ii = 1,maxedge 
            cmtx(ii,ii) = (1.0,0.0)
    enddo 

    print *,'Start LU decompostion '

    LDA = maxedge
    call CGETRF(maxedge,maxedge,cmtx,LDA,IPIV,INFO)
    if( INFO .eq. 0)then
             call CGETRI(maxedge,cmtx,LDA,IPIV,WORK,LWORK,INFO)
             if(INFO .eq. 0) print *,'LU Success'
    else
        print *,'Lapack Factor failure'
       stop
    endif

     stop
end program

附件尺寸
下载 source1.f902.68 KB
4 帖子 / 0 new
最新文章
如需更全面地了解编译器优化,请参阅优化注意事项
Tim Prince的头像

You leave us guessing here.  It may be useful to have a build log,  If you installed the MKL option and specified an option such as /Qmkl your lapack functions should be linked from MKL, and there should be no conflicts due to linking multiple OpenMP libraries.  Did you rebuild, all with debug build, after changing the option?

criswu的头像

I attached my whole program, and i linked my functions wth \Qmkl and enabled the \Qopenmp, it encounts the same error. 

附件: 

附件尺寸
下载 mkl-lapack-test.zip1 MB
criswu的头像

By modifing

complex WORK(LWORK)

to 

complex,allocatable : WORK(:)

and the allocate the array WORK(LWORK) can fix this problem. 

登陆并发表评论。