shibatch / sleef

SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT
https://sleef.org
Boost Software License 1.0
661 stars 131 forks source link

dft test gets stuck during initialisation when hardware vector length is very long #501

Open sh1boot opened 9 months ago

sh1boot commented 9 months ago

If measure() fails here: https://github.com/shibatch/sleef/blob/ecb89367eb943287d0b82655379ea3344ec2a871/src/dft/dft.c#L1041

then the init function falls into this loop, but makes no progress (N is always zero so length never decreases): https://github.com/shibatch/sleef/blob/ecb89367eb943287d0b82655379ea3344ec2a871/src/dft/dft.c#L1222-L1233

AFAICT it's measure() which is responsible for filling in p->bestPath, so if it fails I'm not sure what is meant to happen here.

I get it failing when I set qemu to emulate hardware with 1024-bit vector length on RISCV when running naivetestsp 10, but that code is not merged. Maybe it can also be reproducible with qemu and SVE.

I'm not sure why the earlier functions fail when the hardware is unusually wide, but since there's a code path that does something when they do I suppose it's a thing that's expected to happen.

blapie commented 9 months ago

Hello! Thanks for reporting. However, DFT is not officially supported yet for Risc-V. It is currently work in progress (#496) and it certainly isn't tested yet. @luhenry is currently looking into #496

sh1boot commented 9 months ago

Yeah, I'm doing that RISCV stuff now. The trouble is that when I test with a 1024-bit wide vector register the code I linked to stops making sense.