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

VORTEXM4: STRMM/DTRMM at about half of Accelerate at n = 1024

Aberta
#6,147 0 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
52/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
c
Domínio
backend, performance

Direção de pesquisa

Start by profiling the STRMM path at n = 1024 to separate kernel time, triangle copy time and driver overhead. The issue points to gemm_kernel_sme2.c, trmm_ncopy_sme2.c, trmm_tcopy_sme2.c and driver/level3/trmm_L.c and trmm_R.c; compare those measurements with the listed Accelerate and SYMM results. Done means identifying which part accounts for the slowdown; the candidate causes have not yet been measured separately.

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

Descrição

STRMM and DTRMM on VORTEXM4 (SME2 kernels from #6074) are slower than the other level-3 routines also at large sizes. On an M4 Pro, one thread, n = 1024: all 16 STRMM variants run at 780-888 GFLOPS, Accelerate at 1536-1562 (0.52x); DTRMM is at 0.61x. At n = 4096 STRMM is at 0.78-0.86x. SYMM, which uses the same GEMM kernel through the level-3 driver, reaches 0.93x at n = 1024.

The difference is therefore specific to the TRMM path. Candidates, not yet measured separately:

  • the TRMM kernel (gemm_kernel_sme2.c with TRMMKERNEL) zeroes ZA and stores C = alpha * ZA with a per-row scale-only store (s2_c_store_alpha), not the four-row fast path of the GEMM case;
  • the triangle copies (trmm_ncopy_sme2.c, trmm_tcopy_sme2.c, ~43 GB/s, see #6146);
  • driver/level3/trmm_L.c / trmm_R.c call the kernel on chunks of at most 3 x GEMM_UNROLL_N = 48 columns.

A first step is a profile that separates kernel time, copy time and driver overhead at n = 1024.

Linguagem predominante
C
Estrelas
7.6k
Forks
1.7k
Merge médio
1d 18h
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.