Hirdetés

Új hozzászólás Aktív témák

  • husztiimi

    csendes tag

    Sziasztok!

    Picit esélytelennek érzem a "kérdés-felrakását", mert nem sok kódot látok ebben a kiemelt topikban, de azért hátha…


    Ért valaki a CUDA nvfortran cusolver csomagjához? Van egy kb. 10e soros saját fejlesztésű programunk, amit többnyire szuperszámítógépen futtatgatunk MPI-ban. De rájöttem arra, hogy a kód viszonylag sokszor meghív egy lapack rutint (melynek neve dsyev) ami nagyméretű mátrixokat diagonalizál. Arra gondoltam, hogy a dsyev rutinokat kiváltanám CUDA alatt valamivel.., Meg is találtam a cusolver-ban a dsyev rutint, ámde sajnos képtelen vagyok a cusolver-ben megírni 1 darab dsyev hívást. Sajnos az AI (chatgpt) ebben nem tud segíteni.

    Aki esetleg tud, az mutassa már meg nekem, hogy az alábbi egyszerű, lebutított programnak mi lenne a megfelelője nvfortran alatt? (Esetleg cusolver-ben vagy akár bármi másban: CUDA-MAGMA, SLATE, cuBLAS, akármi...)

    program PHdemo
    implicit none
    integer :: lwork,info
    real*8, allocatable, dimension(:) :: w,work
    character :: jobz,uplo
    integer :: ujp,i,j
    real*8, dimension(:,:), allocatable :: pn_redmat


    ujp=100
    allocate(pn_redmat(ujp,ujp))
    do i=1,ujp
    do j=1,ujp
    pn_redmat(i,j)=i+j
    enddo !j
    enddo !i


    jobz='v'
    uplo='u'
    lwork=3*ujp-1
    allocate(work(lwork),w(ujp))
    call dsyev(jobz,uplo,ujp,pn_redmat,ujp,w,work,lwork,info)
    write(*,*)w
    end program

    Sajna az nem opció, hogy a 10e soros programot írjuk át más nyelvre...

Új hozzászólás Aktív témák