Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Slow performance of function `dsyev` and `dsyevx` (not fully paralleled)

Aberta
#4,758 7 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
38/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
c
Domínio
performance

Direção de pesquisa

Comece reproduzindo o comportamento relatado de dsyev e dsyevx com as opções de make fornecidas, usando a execução vinculada do GitHub Actions e os scripts de benchmark. Compare o comportamento paralelo deles com dsyevd e dsyevr e, em seguida, determine se a causa está na configuração ou na implementação. Considera-se concluído quando a causa raiz for identificada e uma correção validada ou uma limitação documentada for fornecida.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

LAPACK issue

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.

Linguagem predominante
C
Estrelas
7.6k
Forks
1.7k
Merge médio
1d 6h
PRs com merge (30d)
46

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de OpenMathLib/OpenBLAS

Todas as issues de OpenMathLib/OpenBLAS

Issues semelhantes

Mais issues de C

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.