Menu

#20 Read speed

1.0
open
nobody
None
2023-01-25
2022-06-11
Anonymous
No

Hello,

First, thanks for a great player!

I use PGGB so my albums are 30 GB (WAV files), but reading to RAM is only 600MB/s (even with parallelize file read) for a NVME (3500MB/s read capable).
Could you make read speed faster?

Regards,
Henk

Discussion

  • yamamoto2002

    yamamoto2002 - 2022-06-16

    This is pretty interesting problem. I'd like to look into it when I have a spare time

     
  • Anonymous

    Anonymous - 2022-06-17

    Great.

     
  • yamamoto2002

    yamamoto2002 - 2022-08-04

    On preliminary testing, it seems it is possible to transfer 1GB/s to 2GB/s WAV with converting to PCM16/24/32/32float using memory mapped file read and assembly optimized bit-depth conversion. It seems the bottleneck of the process is copying data onto main memory. following is Intel Advisor result.

     
  • yamamoto2002

    yamamoto2002 - 2022-08-04

    ASM PCM16toF32 100M sample conversion in 0.022285 sec. 4.487364 Gsamples/sec
    C++ PCM16toF32 100M sample conversion in 0.053660 sec. 1.863582 Gsamples/sec
    ASM PCM16to24 100M sample conversion in 0.068168 sec. 1.466968 Gsamples/sec
    C++ PCM16to24 100M sample conversion in 0.144177 sec. 0.693593 Gsamples/sec
    ASM PCM24toF32 100M sample conversion in 0.029918 sec. 3.342425 Gsamples/sec
    C++ PCM24toF32 100M sample conversion in 0.110455 sec. 0.905349 Gsamples/sec
    ASM PCM24to32 100M sample conversion in 0.029540 sec. 3.385252 Gsamples/sec
    C++ PCM24to32 100M sample conversion in 0.102460 sec. 0.975993 Gsamples/sec
    ASM PCM16to32 100M sample conversion in 0.039539 sec. 2.529155 Gsamples/sec
    C++ PCM16to32 100M sample conversion in 0.048266 sec. 2.071843 Gsamples/sec

     
  • yamamoto2002

    yamamoto2002 - 2022-08-04

    This is PCM24bit to 32 float conversion performance

     
  • yamamoto2002

    yamamoto2002 - 2022-08-23

    5GB/sec WAV file read was achieved with 8-queue IO Completion ports with 8 thread parallel read with AVX512F and AVX512BW bit depth conversion. Now integrating it with PlayPcmWin code.

     
  • Anonymous

    Anonymous - 2022-08-24

    Wow, great!

     
  • yamamoto2002

    yamamoto2002 - 2022-12-29

    Implemented on PlayPcmWin 5.0.85 but read performance improvement is not enough. Found the read performance bottleneck is on C# marshaling part of the code...

     
  • Anonymous

    Anonymous - 2023-01-23

    Thanks, but in my system there is no improvement.

     
  • yamamoto2002

    yamamoto2002 - 2023-01-25

    True. I'm fixing the bottleneck part. Not completed yet. There are a lot of workaround code for malformed WAV files on C# WAV file read program and I'd like to port it to native C++ code to keep compatibility and it takes some time...

     

Anonymous
Anonymous

Add attachments
Cancel