Slow performance of function `dsyev` and `dsyevx` (not fully paralleled)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 38/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- c
- Ambito
- performance
Direzione di ricerca
Inizia riproducendo il comportamento segnalato di dsyev e dsyevx con le opzioni make fornite, utilizzando l’esecuzione GitHub Actions collegata e gli script di benchmark. Confronta il loro comportamento parallelo con dsyevd e dsyevr, quindi determina se la causa è nella configurazione o nell’implementazione. Il lavoro è completato quando la causa principale è stata identificata e viene fornita una correzione convalidata oppure viene documentata una limitazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hello developers!
I found that functions dsyev and dsyevx seems not fully paralleled, when
- compiled by gcc (11.4/12.3)
- AMD (16 cores @ Ryzen 7945HX of laptop / 2 cores @ EPYC 7763 of github action)
- make options
TARGET=ZEN USE_64BITINT=1 DYNAMIC_ARCH=1 NO_CBLAS=0 NO_LAPACK=0 NO_LAPACKE=0 NO_AFFINITY=1 USE_OPENMP=1
Preliminary testing on Intel CPU may also show similar problem.
I'm not sure whether if it's the problem of make configurations, or OpenBLAS currently not fully implemented parallel version of dsyev and dsyevx.
Hope to hear any thoughts or advices, and thanks in advance!
I guess that dsyevr and dsyevd could be better replacements to dsyev. dsyevd is the fastest but consumes more memory, while dsyevr uses much smaller temporary memory.
So additionally, as a programmer not very familiar to low-level BLAS/LAPACK, I wonder that if it's common to use dsyevr and dsyevd as eigen-solvers, instead of dsyev? If so, this may not be such important issue.
Benchmark results (16 cores @ Ryzen 7945HX)
- CPU ratio refers to (CPU time) / (elapsed time)
- eigen problem of matrix of 2048 x 2048, eigenvectors required, filled with values from 1 -- 2048
| OpenBLAS 0.3.27 | MKL 2024.1 | |||
|---|---|---|---|---|
| function | elapsed time | CPU ratio | elapsed time | CPU ratio |
dsyev |
4861.5 msec | 1.65 | 588.7 msec | 15.75 |
dsyevd |
392.2 msec | 13.69 | 225.9 msec | 15.42 |
dsyevr |
805.6 msec | 6.30 | 698.6 msec | 4.69 |
dsyevx |
3969.8 msec | 1.82 | 542.2 msec | 15.76 |
Reproduction of this issue can be found in Github Action CI (2 physical cores @ EPYC 7763 of github action)(https://github.com/ajz34/issue_openblas_dsyev/actions/runs/9578584638/job/26409147609).
For scripts used in 16 cores @ Ryzen 7945HX, also see https://github.com/ajz34/issue_openblas_dsyev/tree/16-cores-Ryzen-7945HX.
- Lingua principale
- C
- Stelle
- 7.6k
- Fork
- 1.7k
- Merge medio
- 1g 6h
- PR unite (30g)
- 46
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di OpenMathLib/OpenBLAS
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
OpenMathLib/OpenBLAS#6069 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Missing cgroup awarenessAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
OpenMathLib/OpenBLAS#6059 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
OpenMathLib/OpenBLAS#6029 · 21 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
OpenMathLib/OpenBLAS#6028 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
OpenMathLib/OpenBLAS#6005 · 21 commenti · 2 reazioni ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di OpenMathLib/OpenBLAS
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
-
[Issue]: Headers - vx_ext_amd.h does not compile as C (enum types used without the enum keyword)Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
Qiskit/qiskit#17079 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno