-
Fototrend

Új hozzászólás Aktív témák
-
válasz
husztiimi
#20810
üzenetére
> Ha meg át lesznek téve, akkor majd megmérjük, hogy mi legideálisabb inputtól függő választás? openMP + GPU? MPI + GPU? MPI + openMP + GPU
Ezeket szerintem ki lehet számolni, következik a feladat struktúrájából. Például belefér-e a mátrix a GPU memóriájába? Ha igen, mennyi idő megcsinálni vs mennyi idő 1) feltölteni 2) odavinni a node-ra? Ha jól láttam, 200 gbps interkonnekt van, azért az nem nagyon gyors (késleltetést nem tudom). Szóval én először biztos csinálnék papíron egy esztimaciot.
-
proci985
MODERÁTOR
válasz
husztiimi
#20810
üzenetére
Ezért mondtam, hogy én ránéznék az authorlistákra. Nekem is volt, hogy egy PhD thesisből vagy egy régi repoból kellett visszafejteni mit csináltak, de még mindig egyszerűbb, mint ilyen szinten belemászni az optimizációba.
Egyébként adott esetben megpróbálni felvenni a kapcsolatot az authorokkal is működhet.
-
proci985
MODERÁTOR
válasz
husztiimi
#20805
üzenetére
(nem mozgok HPC területen)
leírás alapján tippre lehet bele kéne nyúlni a pipelinebe, hogy nyerjetek is valamit.
GPUn mátrix transzformációnak gyorsabbnak kéne lennie, de a kérdés, hogy mennyi idő megy el az adatmozgatással.
ha kutatási terület, én ránéznék a környezeti publikációkra, hogy ki futtat hasonló HPC környezetben. cikkeknél nem mindig írják le, hogy mit hogy oldottak meg tartalmi okok miatt, de pl egy master vagy phd thesis esetén van esély, hogy lesz egy github repo és egy rendes leírás is.
-
coco2
őstag
válasz
husztiimi
#20802
üzenetére
A chatgpt google skill-t helyettesíteni jó, azon túl teljesen megbízhatatlan. Olyan esetekben használható, amikor semmi sem múlik azon, hogy működni fog-e, vagy sem.
Chat gpt vicc:
eval(await OpenAI("fix this:"+ErrorMessage))
Kicsit komolyabban a 10k sor önmagában úgy hangzik, mint 2 emberhónapnyi munka. Ha azon egy szoftver cég kiakad, húzza le a rolót. Ami konkrétan azt a 10k sort illeti, a kérdés inkább az, létezik-e még elő ember, dokumentáció, szájhagyomány útján terjedő akármi, amiből meg lehet érteni a bemeneti adatot, és a feldolgozásának a miértjét? Ha már nem létezik, akkor az a probléma nem arra van tervezve, hogy azt bárki megoldja. Aki mégis azzal foglalkozik, fordítva ül a lovon.
Ja igen, "szuperszámítógépen futtatjuk" - az a napi nagyot mondás gyakorlatod volt?
![;]](//cdn.rios.hu/dl/s/v1.gif)
-
válasz
husztiimi
#20797
üzenetére
o3-high-t probaltad?
program cusolver_demo use iso_c_binding implicit none interface function cusolverDnCreate(handle) bind(C, name="cusolverDnCreate") import :: c_ptr, c_int type(c_ptr), intent(out) :: handle integer(c_int) :: cusolverDnCreate end function cusolverDnCreate function cusolverDnDestroy(handle) bind(C, name="cusolverDnDestroy") import :: c_ptr, c_int type(c_ptr), value :: handle integer(c_int) :: cusolverDnDestroy end function cusolverDnDestroy function cusolverDnDsyevd(handle, jobz, uplo, n, d_A, lda, d_W, d_work, lwork, d_devInfo) & bind(C, name="cusolverDnDsyevd") import :: c_ptr, c_int, c_double, c_char type(c_ptr), value :: handle character(c_char), value :: jobz character(c_char), value :: uplo integer(c_int), value :: n type(c_ptr) :: d_A integer(c_int), value :: lda type(c_ptr) :: d_W type(c_ptr) :: d_work integer(c_int), intent(inout) :: lwork type(c_ptr) :: d_devInfo integer(c_int) :: cusolverDnDsyevd end function cusolverDnDsyevd function cusolverDnDsyevd_bufferSize(handle, jobz, uplo, n, d_A, lda, d_W, lwork) & bind(C, name="cusolverDnDsyevd_bufferSize") import :: c_ptr, c_int, c_char type(c_ptr), value :: handle character(c_char), value :: jobz character(c_char), value :: uplo integer(c_int), value :: n type(c_ptr) :: d_A integer(c_int), value :: lda type(c_ptr) :: d_W integer(c_int), intent(out) :: lwork integer(c_int) :: cusolverDnDsyevd_bufferSize end function cusolverDnDsyevd_bufferSize end interface integer(c_int) :: n, lda, lwork, status type(c_ptr) :: handle type(c_ptr) :: d_A, d_W, d_work, d_devInfo real(c_double), allocatable :: h_A(:,:), h_W(:) character(c_char) :: jobz, uplo integer :: i, j n = 100 lda = n allocate(h_A(n,n)) allocate(h_W(n)) do i = 1, n do j = 1, n h_A(i,j) = i + j end do end do jobz = 'V' uplo = 'U' status = cusolverDnCreate(handle) if (status /= 0) then write(*,*) "Hiba: cusolverDnCreate" stop end if ! GPU-memória allokálás, pl.: ! call cudaMalloc(d_A, n*n*sizeof(real(c_double))) ! call cudaMalloc(d_W, n*sizeof(real(c_double))) ! Másolás: h_A -> d_A (cudaMemcpy) ! Lekérdezzük a szükséges workspace méretet: status = cusolverDnDsyevd_bufferSize(handle, jobz, uplo, n, d_A, lda, d_W, lwork) if (status /= 0) then write(*,*) "Hiba: Buffer méret lekérdezés" stop end if ! GPU workspace allokálása a lwork méret alapján: ! call cudaMalloc(d_work, lwork*sizeof(real(c_double))) ! call cudaMalloc(d_devInfo, sizeof(integer(c_int))) ! Eigen-dekompozíció meghívása: status = cusolverDnDsyevd(handle, jobz, uplo, n, d_A, lda, d_W, d_work, lwork, d_devInfo) if (status /= 0) then write(*,*) "Hiba: cusolverDnDsyevd" stop end if ! Eredmények visszamásolása: pl. ! call cudaMemcpy(h_W, d_W, n*sizeof(real(c_double)), cudaMemcpyDeviceToHost) ! Ha az eigenvektorokra is szükség van: call cudaMemcpy(h_A, d_A, n*n*sizeof(real(c_double)), cudaMemcpyDeviceToHost) ! GPU erőforrások felszabadítása: ! call cudaFree(d_A); call cudaFree(d_W); call cudaFree(d_work); call cudaFree(d_devInfo) status = cusolverDnDestroy(handle) if (status /= 0) then write(*,*) "Hiba: cusolverDnDestroy" end if write(*,*) "Eigenértékek:" write(*,*) h_W end program cusolver_demo
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- BESZÁMÍTÁS! Gigabyte Z390 i7 9700K 16GB DDR4 512GB SSD RX 6600 8GB Rampage SHIVA FSP 550W
- 230 - Lenovo Legion 5 (15IRX10) - Intel Core i7-13650HX, RTX 5060
- Iphone 15 Mobiltelefon 128Gb 100% akkumulátorral
- BESZÁMÍTÁS! 1TB Samsung 980 M.2. NVMe SSD meghajtó garanciával hibátlan működéssel
- Telefon felvásárlás!! Samsung Galaxy S25, Samsung Galaxy S25 Plus, Samsung Galaxy S25 Ultra
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

![;]](http://cdn.rios.hu/dl/s/v1.gif)
